我刚刚发现有关:colorscheme命令。有没有办法可以从Vim获取有效的配色方案列表?我希望能够从Vim内部而不是从Internet上的列表中执行此操作。

#1 楼

最简单的方法是在:help c_Ctrl-d之后使用:colorscheme

,因此,:colorscheme Ctrl-d将输出可用的颜色方案。

确保:colorscheme 后有空格。

评论


也可以在Windows上工作!

–同构
17-12-27 at 2:20

#2 楼

显示列表的另一种方法是set wildmenu。这样,在:colorscheme + space + tab之后,将显示完成列表,并且还可以使用箭头键或Ctrl-NCtrl-P选择完成列表。这不仅适用于colorcheme,而且适用于其他cmdline补全。该行为受wildmode影响,最好将其设置为默认值full

#3 楼

如果要在Vimscript中执行此操作,则可以使用getcompletion()函数获取配色方案列表:

let c = getcompletion('', 'color')
echo c


这比现有的要简单一些Vimscript答案,用于扫描文件系统。

有关详细信息,请参阅:help getcompletion()

#4 楼

其他答案显示了交互方式,以显示可用的颜色方案,但是没有人提到获得一种可以在vimscript中使用的列表的方法。这是我对这个问题答案的改编。

此解决方案使用'runtimepath'选项获取所有可用的colorcheme
目录,然后获取这些目录中的vimscript文件列表
扩展名已删除。这可能不是最安全的方法,因此欢迎进行改进:

function! GetColorschemes()
    " Get a list of all the runtime directories by taking the value of that
    " option and splitting it using a comma as the separator.
    let rtps = split(&runtimepath, ",")
    " This will be the list of colorschemes that the function returns
    let colorschemes = []

    " Loop through each individual item in the list of runtime paths
    for rtp in rtps
        let colors_dir = rtp . "/colors"
        " Check to see if there is a colorscheme directory in this runtimepath.
        if (isdirectory(colors_dir))
            " Loop through each vimscript file in the colorscheme directory
            for color_scheme in split(glob(colors_dir . "/*.vim"), "\n")
                " Add this file to the colorscheme list with its everything
                " except its name removed.
                call add(colorschemes, fnamemodify(color_scheme, ":t:r"))
            endfor
        endif
    endfor

    " This removes any duplicates and returns the resulting list.
    return uniq(sort(colorschemes))
endfunction


然后可以在vimscript中使用此函数返回的列表。对于
实例,您可以简单地回显每种颜色方案:

for c in GetColorschemes() | echo c | endfor


我不会在这里解释每个单独的函数或命令的作用,但是这里是
/>我使用过的所有帮助页面的列表:


:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()


#5 楼

您可以尝试使用

:colorscheme,然后先按空格键,然后按Tab键。

评论


请注意,这取决于您的wildmenu和wildchar设置,并且此答案与tivn的答案基本相同

–statox♦
18年3月1日在9:29