在 Vim 中,我想为每种文件类型使用不同的colorscheme。
例如我想将desert256
colorscheme用于 Python & JavaScript 文件,并使用{em> HTML &的jellybeans
colorscheme CSS 文件。
我已尝试在我的.vimrc
中添加以下代码,但在第一次更改缓冲区时,colorscheme更改仅发生 。
ie 如果我打开一个新的 Python 文件,则使用 Python 的colorscheme,当我打开一个新的 CSS时 * buffer *,确实colorscheme改为 CSS 的colorscheme。但是,更改回 Python 的缓冲区不会改变colorscheme。
我使用autocmd WinEnter
尝试在更改窗口(和缓冲区)时使这个规则发生,但它没有帮助:
autocmd WinEnter,FileType python,javascript colorscheme desert256
autocmd WinEnter,FileType *,html,css colorscheme jellybeans " This includes default filetype colorscheme.
我该如何解决这个问题?此外,奖励是在不需要时不改变colorscheme - 即从 Python 更改为 JavaScript 缓冲区不会改变colorscheme为“本身”。
如果有人有兴趣,here is my .vimrc
repo in github.com。我会用我在这里找到的解决方案更新它。
答案 0 :(得分:25)
我一直在寻找同样的事情。你的.vimrc内部工作得相当好,但并不完美。
autocmd BufEnter * colorscheme default
autocmd BufEnter *.php colorscheme Tomorrow-Night
autocmd BufEnter *.py colorscheme Tomorrow
(请注意,如果你正在寻找一个好的深色主题Tomorrow-Night看起来很不错。非常类似于Code Academy上使用的主题。)
答案 1 :(得分:18)
你想要的是文件类型插件,而不是autocmd
。在vim中运行help: ftplugin
以获取更多信息。
从vim帮助页面:
文件类型插件就像一个全局插件,除了它设置选项和 仅定义当前缓冲区的映射。
为了使用filetype插件,首先将行filetype plugin on
放在vimrc中。然后在你的vim文件夹中创建文件夹ftplugin
(在unix上~/.vim/
,我不熟悉windows)。然后为要自定义的每种文件类型创建一个脚本文件。必须以特定方式命名这些文件。从vim帮助页面:
文件类型插件的通用名称是:
文件类型插件/的filetype.vim
文件类型插件/ filetype_name.vim
文件类型插件/文件类型/ name.vim
因此,例如,如果我想为python文件创建脚本,我将有三个选项:
随后我打开vim识别为python文件的文件时,将加载此脚本。
所以,为了达到你想要的目的:
colorscheme name_of_colorscheme
行filetype plugin on
添加到您的vimrc。编辑: OP表示他有充分的理由避免使用ftplugin目录。经过多次挖掘后,我发现this script.它可以放在全局vimrc中,似乎是为了解决与OP相同的问题。
答案 2 :(得分:4)
我有一个你可能喜欢的黑客。它远非完美,它不使用.vimrc,但它适用于我。它要求您键入不同的命令来编辑不同的文件。调用gvim时,它使用-c参数。此参数允许您在加载文件后运行vim命令。将它添加到你的〜/ .bashrc(我想你正在使用bash):
alias gpy="gvim -c 'colorscheme desert'"
alias gcs="gvim -c 'colorscheme jellybeans'"
希望这有帮助
答案 3 :(得分:1)
使用BufWinEnter
代替WinEnter
,如下所示:
autocmd BufWinEnter,FileType javascript colorscheme jellybeans