【问题标题】:Automatically change colorscheme based on FileType根据 FileType 自动更改配色方案
【发布时间】:2013-05-22 13:05:40
【问题描述】:

我读过这个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 应用于哪个缓冲区,为什么我在 BufLeave 旁边指定 .sql

【问题讨论】:

  • 事件列表中不能有空格:BufEnter, BufNewFile 应为BufEnter,BufNewFile
  • @IngoKarkat - 好地方;实际文件中没有空间......我输入了上面的内容 - 现在将编辑

标签: vim


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2017-10-30
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    相关资源
    最近更新 更多