如何判断Vim会话当前使用哪种colorscheme

got*_*nes 98 vim configuration syntax-highlighting

您可以通过发出来设置 Vim颜色方案

:colorscheme SCHEME_NAME
Run Code Online (Sandbox Code Playgroud)

但是,奇怪的是,你无法通过发布获得当前使用的方案

:colorscheme
Run Code Online (Sandbox Code Playgroud)

因为这导致" E471: Argument required".我也没有看到输出中列出的配色方案:set.

那么你如何计算当前使用的颜色方案(除了手动切换主题直到你认出它)?

DrA*_*rAl 149

没有保证的方式(因为颜色方案本质上是源的vim命令的加载).但是,按照惯例,应该有一个g:colors_name设置为颜色方案名称的变量.

因此,试试这个:

echo g:colors_name
Run Code Online (Sandbox Code Playgroud)

如果你得到的是E121,它可能是制作不佳的配色方案,也可能是默认配色方案.

这样做的一个更好的方法是(对于最新版本的vim):

function! ShowColourSchemeName()
    try
        echo g:colors_name
    catch /^Vim:E121/
        echo "default
    endtry
endfunction
Run Code Online (Sandbox Code Playgroud)

然后做:

:call ShowColourSchemeName()
Run Code Online (Sandbox Code Playgroud)

如果它显示"默认",请:colorscheme default查看颜色是否发生变化.如果他们这样做,你就会使用格式错误的配色方案,除了手动切换主题直到你认出它之外,你可以做很多事情.

该变量g:colors_name记录在这里:

:help colorscheme
Run Code Online (Sandbox Code Playgroud)

  • 神奇,完整的答案.我希望我能两次投票.谢谢. (3认同)

Gat*_*too 35

最好的选择是使用:colo:colorscheme在当前的vim中显示实际的colorscheme文本.请参阅,

:help colorscheme 
Run Code Online (Sandbox Code Playgroud)

更多细节.

  • 它对我不起作用。它说“默认”。当我执行 `:colo default` 时我得到的配色方案是另一个。 (3认同)

joe*_*dle 9

DrAl 答案的单行版本:

let current_scheme = get(g:, 'colors_name', 'default')
Run Code Online (Sandbox Code Playgroud)

如果变量尚未设置,该get()函数将回退到'default'