2013-05-22 33 views
1

我读过这个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行肯定会执行,但是它将应用哪个缓冲区以及为什么要在BufLeave旁边指定.sql

+0

事件列表中不能有空格:BufEnter,BufNewFile应该读取BufEnter,BufNewFile。 –

+0

@IngoKarkat - 不错的地方;在实际文件中没有空格....我输入了上面的内容 - 现在编辑 – whytheq

回答

5

Colorschemes是全球性的;它们的颜色同时适用于所有窗口。因此,只能为每个缓冲区/文件类型/窗口创建不同颜色格式的错觉,如果您在同一时间显示不同的文件时将会破碎。如果您不使用窗口拆分或者只使用相同颜色的拼图同时显示,那么:autocmd的解决方案应该可以工作。

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

注意:如果您想扩展切换到更多文件类型和色彩搭配,this answer可能会有所帮助。