根据FileType自动更改颜色方案

时间:2013-05-22 13:05:41

标签: vim

我已阅读此SO question

我还执行了以下帮助主题:
:h BufEnter
:h BufNewFile
:h BufLeave

...但仍然 - 我在vimrc中有以下内容 - 它是如何运作的?

colo pyte
autocmd! BufEnter,BufNewFile *.sql colo Zenesque
autocmd! BufLeave  *.sql colo pyte

如果我打开一个.sql文件,我假设它正在执行BufNewFile,因此应用颜色方案Zenesque?如果我然后离开那个缓冲区并将光标放在vimrc的缓冲区中,那么BufLeave行肯定会执行但是哪个缓冲区应用了pyte,为什么我在{{1}旁边指定.sql }}?

1 个答案:

答案 0 :(得分:5)

Colorschemes是全球性的;它们的颜色同时适用于所有窗户。因此,您只能为每个缓冲区/文件类型/窗口创建不同颜色方案的幻觉,当您同时看到不同的颜色方案时,它们将被破坏。如果您不使用窗口拆分或仅使用相同颜色方案同时显示拆分,则使用:autocmd的解决方案应该可以正常工作。

BufLeaveBufEnter的对应部分; BufNewFile只是新缓冲区的特例。所有都具有相同的*.sql模式,以便它们相互撤消。例如,当您从.vimrc移动时,BufEnter将会执行。当你向后移动时,BufLeave将会执行。对于你的.vimrc缓冲区,类似的事件会触发,但它们背后没有任何操作,因为你没有为*.vim定义类似的autocmds。

注意:如果您希望将切换扩展到更多文件类型和颜色方案,this answer可能会有所帮助。