如何在Vim分屏窗口中获取不同的配色方案?

3

我希望为Python和其他文件设置不同的colorscheme

所以,我在我的vimrc中添加了以下两行:

"for python file
autocmd! BufEnter,BufNewFile *.py colo badwolf
autocmd! BufLeave *.py colo badwolf

"for rest of the files
colo molokai

使用 vim test.py 打开一个新的/预存在的文件时,一切都很正常,但是当我使用 :split .scripts/test.sh 将我的 vim 窗口分割成两个窗口时,问题就出现了。

问题在于,在将窗口分割为两个后,当我的光标移动到新的拆分窗口(.sh)时,我会得到 python 文件的 molokai 配色方案,而当我将光标移动到旧窗口(.py)时,我会在我 .sh 窗口 中得到 badwolf 配色方案。因此,可以看出,最终我的窗口将根据哪种文件类型处于焦点而具有相同的配色方案。

在使用 Vim-Tab 时,只要我打开一个具有其预定义配色方案(通过 autocmd)的文件,所有选项卡都应用该配色方案。

因此,是否有任何方法可以在 vim 拆分窗口和选项卡中具有不同的 配色方案


1
Vim的颜色方案通常是全局的。您不能为不同的分割窗口等设置不同的颜色方案。在这个主题上,您可以做的最好的事情可能是为语法的不同部分设置自定义匹配,但这似乎真的不值得麻烦。 - Rook
@idigas:但至少应该有一个功能,可以为选项卡设置不同的配色方案。 - RanRag
就我个人而言,我喜欢 Vim 的一点是你不能太多地自定义它(像 Emacs 一样,不同的字体、颜色、图像),所以它总是看起来很熟悉。 - Rook
@ldigas:抱歉我用了小写的 L。下次我会记住的 :) - RanRag
3个回答

3

我认为可靠地同时使用不同的颜色方案是不可能的。

实际上,我非常惊讶你能够为不同的窗口加载不同的颜色方案。 :colorscheme molokai 是一个全局命令,适用于每个缓冲区。


在vim中,根据文件类型可以有不同的颜色方案参考链接,但是无法像OP想要的那样拥有不同的颜色方案。如果Vim能够添加这个功能,我会非常喜欢。 - RanRag
你真的尝试过那个答案吗?我刚刚用一个HTML文件在vsplit中,另一个JS文件在另一个窗口中尝试了一下:从一个窗口切换到另一个窗口会改变颜色方案,但是对于两个窗口都是如此。这是毫无意义的。 - romainl

2

虽然不完全符合你的要求,但是这个 tab页颜色方案vim插件 可以让你使用 :Tcolorscheme 为每个标签分配不同的颜色方案。


根据你的描述,听起来很有趣。但由于该项目甚至没有README文件,对于入门非常不友好,我想很多人(包括我)会跳过它。 - Dennis

1

这其实更像是一种被不赞成的、非 Vim 解决方案,但你可以使用 tmuxscreen 面板来分离两个具有不同颜色方案的 Vim 实例。


在同一个Vim实例中打开多个文件有一定的好处,比如可以使用Vim命令轻松地在文件之间复制粘贴。但是,在使用tmux或screen时,这该如何处理呢? - Dennis
如上所述,这是一种非vim解决方法,它失去了在同一个vim实例中加载文件的许多好处。我建议它作为解决方案来满足OP的要求。但是,如果您必须在tmux窗格之间复制和粘贴,则可以阅读我在此问题上的答案。 - Conner
2
@Dennis,你可以这样设置vim,使得yank操作总是同时复制到系统剪贴板中,这样yy p命令就可以在tmux vim实例之间使用了。我觉得这非常方便,可以缓解多个tmux vim实例的问题。不幸的是,这种方法似乎只适用于Linux系统(我认为Mac版本的Vim太旧了)。在你的vimrc文件中添加set clipboard=unnamed即可。 - Thomas Browne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接