1

我读过这个问题

我还执行了以下帮助主题:
: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 应用于哪个缓冲区,为什么要在.sql旁边指定BufLeave

4

1 回答 1

6

配色方案是全球性的;它们的颜色同时适用于所有窗口。因此,您只能为每个缓冲区/文件类型/窗口创建不同颜色方案的错觉,当您同时看到不同的颜色方案时,这种错觉就会被打破。如果您不使用窗口拆分或仅使用同时可见的相同颜色方案进行拆分,那么您的解决方案:autocmd应该可以工作。

BufLeaveBufEnter; _ 这BufNewFile只是新缓冲区的一个特例。所有这些都具有相同的*.sql模式,因此它们可以相互撤消。例如,当您从您的 移动时.vimrcBufEnter将执行。当您返回时,BufLeave将执行。对于您的.vimrc缓冲区,将触发类似的事件,但它们背后没有任何操作,因为您尚未为*.vim.

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

于 2013-05-22T13:33:57.543 回答