我已阅读此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
}}?
答案 0 :(得分:5)
Colorschemes是全球性的;它们的颜色同时适用于所有窗户。因此,您只能为每个缓冲区/文件类型/窗口创建不同颜色方案的幻觉,当您同时看到不同的颜色方案时,它们将被破坏。如果您不使用窗口拆分或仅使用相同颜色方案同时显示拆分,则使用:autocmd
的解决方案应该可以正常工作。
BufLeave
是BufEnter
的对应部分; BufNewFile
只是新缓冲区的特例。所有都具有相同的*.sql
模式,以便它们相互撤消。例如,当您从.vimrc
移动时,BufEnter
将会执行。当你向后移动时,BufLeave
将会执行。对于你的.vimrc
缓冲区,类似的事件会触发,但它们背后没有任何操作,因为你没有为*.vim
定义类似的autocmds。
注意:如果您希望将切换扩展到更多文件类型和颜色方案,this answer可能会有所帮助。