ChatGPT解决这个技术问题 Extra ChatGPT

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

有没有办法在 Vim 中获取所有已安装配色方案的列表?这样可以很容易地选择一个,而无需查看 .vim 目录。


X
Xavier T.

类型

:colorscheme 然后是 Space,然后是 TAB

或者正如彼得所说,

:colorscheme 然后是 Space 后跟 CTRLd

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

如果您想查找和预览更多主题,可以使用各种网站,例如 Vim colors


如果您安装了很多方案, 实际上会更好。
或者,如果您有 :set wildmenu,您可以通过点击标签获得与 <c-d> 相同的效果。
:colorscheme 之后添加空间后为我工作。也许这是微不足道的事情,但是,我花了一些时间来揭示。
@jutky:你是对的,否则它只会完成命令名称。我会相应地更新答案。
:colo 并不是真正的短格式。它刚刚完成,因为没有冲突的命令。如果您发出“colobanana”之类的命令,那么 :colo 将有多个“长格式”,因此它不会按建议工作。
F
Fabien

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

这在 here 中进行了解释。

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


这错过了用户安装的配色方案(在主目录下)。
通往颜色表的路径,正是我想要的,谢谢!
请注意,vimNN 中的 NN 将对应于 vim 的版本,例如 vim74 代表 vim 7.4。只是想指出这一点,因为我很慢,当我去看的时候它让我做了双重考虑;)
@AdamP我在答案中添加了精确度。
r
runlevel0

只是为了方便参考,因为我看到有很多人在搜索这个主题并且太懒了......对不起,忙,自己检查(包括我)。以下是 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 

很有帮助的清单。对于那些眼睛较老,甚至更忙的人,以下是我认为最易读的:delek、koehler、slate 和 zellner。我选择了zellner。
不错的选择,但对我来说红色可能有点太多了。我更喜欢沙漠,它使用绿松石/浅蓝色。 (在 vim 中,输入 :colors Desert)
我一直使用对我来说似乎具有良好对比度的火炬,并且不会试图成为“风格”,并且不会通过使颜色相似来“浪费对比度带宽”。
J
John C Earls

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

循环浏览所有已安装的颜色方案。轻松选择配色方案的好方法。


c
chappar

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

调用 DisplayColorSchemes()
m
mike3996

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

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


r
roy

查看我系统的 menu.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)下可用配色方案脚本的列表 将脚本路径映射到它们的基本名称(去除父目录和扩展名)(map、fnamemodify) 排序和删除重复项(uniq、sort)

然后要使用该功能,我会执行以下操作:

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

这意味着我更喜欢 'solarized' 然后是 'darkblue' 方案;如果它们都不可用,则什么也不做。


j
justrajdeep

我知道我迟到了这个答案,但正确的答案似乎是

请参阅:help getcompletion():

:echo getcompletion('', 'color')

您可以将其分配给变量:

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

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

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

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


W
William Barrett

一个很好的解决方案,感谢您的贡献者。多年来,我一直在为一个完全蹩脚的配色方案而苦苦挣扎——在 Windows Vista 下使用 SSH 连接到 Redhat 系统,终端类型为 xterm。编辑器会为各种关键字提供黑色背景和奇怪的颜色。更糟糕的是——在离开 Vim 后,奇怪的配色方案仍然存在于 xterm 终端中。

真的很混乱。

此外,Backspace 在插入模式下失败,这很难记住——尽管 Delete 做了同样的事情。

治愈 -

在 SSH 监视器中,选择编辑/设置。一个。选择配置文件设置/颜色 b。选中“启用 ANSI 颜色” c。标准文本颜色可能没问题 添加这些行到 $HOME/.vimrc: colorscheme default if &term == "xterm" set t_kb=^H fixdel endif 注意:^H 必须输入为 ctrl-V ctrl-H。看起来很奇怪,但这似乎有效。


B
Brady Trainor

尝试

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

在您的 ~/.vimrc 中。

前两行使可能的匹配项显示为列表。您可以使用其中一个或两个。

第四行使领导者 , 而不是默认的 \

最后一行让您只需键入 ,c 即可获得列表并提示您更改配色方案。

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

(当然,所有这些策略都是我从互联网上学到的,而且大部分都是最近才学到的。)


如果我没看错,<C-z>(我可能不是)会将默认的 ctrl-z 重新映射到您的编辑器的后台,这是我一直做的事情。因此,如果您不知道自己在做什么,请注意绑定此键盘映射。
n
nitinr708

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

您可以使用 - CTRL + W + W ENTER 返回到您正在编辑的文件

注意:仅当您的主目录中有当前 $USER.vim/colors 目录时,上述内容才有效(我有 70 多个主题)

[user@host ~]$ ls -l ~/.vim/colors |厕所-l 72