如何在Vim中获得所有已安装的配色方案的列表?

是否有一种方法可以在Vim中获得所有已安装的配色方案的列表?这样就可以很容易地选择一个,而不需要查看.vim目录。

363458 次浏览

类型

:colorscheme,然后空间,接着选项卡

或者如彼得所说,

:colorscheme,然后空间,接着CTRLd

该命令的简短版本是:colo,所以你可以在前面的两个命令中使用它,而不是使用“长格式”。

如果你用+menu编译了你的vim,你可以用console-menu:help跟随菜单。从那里,你可以导航到Edit.Color\ Scheme以获得与在gvim中相同的列表。

另一种方法是使用一个很酷的脚本ScrollColors,它可以在你用j/k滚动方案时预览配色方案。

你可以在/usr/share/vim/vimNN/colors下面看到配色方案的列表(其中NN是版本,例如,vim 7.4的vim74)。

这是解释在这里

在我通过ssh使用的linux服务器上,选项卡打印^ICTRLd打印^D

一个伟大的解决方案,我感谢你的贡献者。多年来,我一直在与一个完全糟糕的配色方案作斗争——在Windows Vista下使用SSH到Redhat系统,终端类型为xterm。 编辑器会为各种关键词提供黑色背景和奇怪的颜色。 更糟糕的是——奇怪的配色方案在离开Vim后留在xterm终端

真的很让人困惑。

此外,Backspace在插入模式时失败了,这让人难以记住——尽管Delete也发生了同样的事情。

治愈方法——

  1. 在SSH监视器中选择“Edit/Settings”。

    a.选择“配置文件设置/颜色”

    b.检查“启用ANSI颜色”

    c.标准文本颜色可能OK

  2. 将这些行添加到$HOME/.vimrc:

    colorscheme违约

    If &term == "xterm"

    设置t_kb = ^ H

    fixdel

    endif < / p >

  3. 注意:^H必须输入ctrl-V ctrl-H。听起来很奇怪,但这似乎很管用。

如果你愿意安装一个插件,我推荐https://github.com/vim-scripts/CycleColor

循环使用所有已安装的配色方案。很好地选择一个配色方案。

试一试

set wildmenu
set wildmode=list:full
set wildcharm=<C-z>
let mapleader=','
nnoremap <leader>c :colorscheme <C-z><S-Tab>

~/.vimrc中。

前两行使可能的匹配显示为列表。你可以用其中之一,也可以两者都用。

第四行将leader设为,,而不是默认的\

最后一行允许你简单地输入,c来获得一个列表和一个改变配色方案的提示。

第三行有效地允许__abc0出现在关键映射中。

(当然,所有这些策略都是我最近从网上学到的。)

下面是我编写的一个小函数,用于尝试$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

看着我的系统菜单。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

它的功能如下:

  1. 获取所有运行时下可用的配色方案脚本的列表 路径(globpath, runtimepath)
  2. .使用实例
  3. 将脚本路径映射到它们的基名(条带父dirs和 Extension) (map, fnamemodify)
  4. 排序和删除重复项(uniq, sort)

然后使用这个函数,我这样做:

let s:schemes = GetColorSchemes()
if index(s:schemes, 'solarized') >= 0
colorscheme solarized
elseif index(s:schemes, 'darkblue') >= 0
colorscheme darkblue
endif

这意味着我更喜欢“太阳能”和“深蓝色”方案;如果没有,什么都不做。

只是为了方便参考,因为我看到有很多人在搜索这个话题,他们太懒了…对不起,很忙,要自己检查(包括我)。下面是Vim 7.4的默认配色方案:

blue.vim
darkblue.vim,
delek.vim
desert.vim
elflord.vim
evening.vim
industry.vim
koehler.vim
morning.vim
murphy.vim
pablo.vim
peachpuff.vim
ron.vim
shine.vim
slate.vim
torte.vim
zellner.vim

另一种更简单的方法是在编辑文件时- tabe ~/.vim/colors/ ENTER 将在vim窗口的新选项卡中打开所有主题。< / p >

你可以使用- CTRL + W + W 输入返回到你正在编辑的文件

注意:只有当你当前的$USER在你的主目录中有一个.vim/colors目录时,以上才有效 (我有70+主题)

[user@host ~]$ ls -l ~/。Vim /colors | wc -l

72

我知道我回答这个问题有点晚了,但正确答案似乎是

看到:help getcompletion():

:echo getcompletion('', 'color')

你可以把它赋值给一个变量:

:let foo = getcompletion('', 'color')

或者在表达式寄存器中使用:

:put=getcompletion('', 'color')

这不是我的答案,这个解决方案是由reddit上的帖子中的u / romainl提供的。