是否有一种方法可以在Vim中获得所有已安装的配色方案的列表?这样就可以很容易地选择一个,而不需要查看.vim目录。
当前回答
如果你用+菜单编译了你的vim,你可以用console-menu的:帮助跟随菜单。从那里,您可以导航到Edit。Color\ Scheme来获得与gvim中相同的列表。
另一种方法是使用一个很酷的脚本ScrollColors,它可以在你用j/k滚动方案时预览配色方案。
其他回答
看着我的系统菜单。vim(寻找“配色方案子菜单”)和@chappar的答案,我想出了以下函数:
" Returns the list of available color schemes
function! GetColorSchemes()
return uniq(sort(map(
\ globpath(&runtimepath, "colors/*.vim", 0, 1),
\ 'fnamemodify(v:val, ":t:r")'
\)))
endfunction
它的功能如下:
获取所有运行时下可用的配色方案脚本的列表 路径(globpath, runtimepath) 将脚本路径映射到它们的基名(条带父dirs和 扩展)(映射,fnamemodify) 排序和删除重复项(uniq, sort)
然后使用这个函数,我这样做:
let s:schemes = GetColorSchemes()
if index(s:schemes, 'solarized') >= 0
colorscheme solarized
elseif index(s:schemes, 'darkblue') >= 0
colorscheme darkblue
endif
这意味着我更喜欢“太阳能”和“深蓝色”方案;如果没有,什么都不做。
下面是我编写的一个小函数,用于尝试$VIMRUNTIME/colors目录中的所有配色方案。
将下面的函数添加到vimrc中,然后打开源文件并从命令调用该函数。
function! DisplayColorSchemes()
let currDir = getcwd()
exec "cd $VIMRUNTIME/colors"
for myCol in split(glob("*"), '\n')
if myCol =~ '\.vim'
let mycol = substitute(myCol, '\.vim', '', '')
exec "colorscheme " . mycol
exec "redraw!"
echo "colorscheme = ". myCol
sleep 2
endif
endfor
exec "cd " . currDir
endfunction
你可以在/usr/share/vim/vimNN/colors下面看到配色方案的列表(NN是版本,例如vim 7.4的vim74)。
这里解释一下。
在我通过ssh使用的linux服务器上,TAB打印^I, CTRLd打印^D。
我知道我回答这个问题有点晚了,但正确答案似乎是
参见:help getcompletion():
:echo getcompletion('', 'color')
你可以把它赋值给一个变量:
:let foo = getcompletion('', 'color')
或者在表达式寄存器中使用:
:put=getcompletion('', 'color')
这不是我的答案,这个解决方案是由reddit上的u/romainl提供的。
如果你用+菜单编译了你的vim,你可以用console-menu的:帮助跟随菜单。从那里,您可以导航到Edit。Color\ Scheme来获得与gvim中相同的列表。
另一种方法是使用一个很酷的脚本ScrollColors,它可以在你用j/k滚动方案时预览配色方案。