【问题标题】:Colorscheme change when filetype changes文件类型更改时颜色方案更改
【发布时间】:2011-06-29 19:19:40
【问题描述】:

当我打开 .vim、.htm、.html、.xml 或 _vimrc 文件时,是否可以更改 Vim 中的颜色方案? (当我切换到具有上述扩展名的已打开文件时,也会更改颜色方案)

这就是我希望我的 vim 做的事情:

file = txt 或新的(未保存的)缓冲区:colorscheme1(默认颜色方案)
文件 = vimrc、vim、html、htm:colorscheme2

我还注意到我的 vim 没有检测到所有文件类型。
文本文件不被识别为文本文件。

ps:
如果这不可能,是否可以切换到另一个颜色方案并在我重新启动 VIM 时保留它(而不更改 vimrc 中的某些内容)?


编辑

使用自动命令找到解决方案:

augroup filetype_colorscheme
    au BufEnter *
    \ if !exists('b:colors_name')
        \ | if &ft == "vim" || &ft == "html"
            \ | let b:colors_name = 'colorscheme 2'
        \ | else
            \ | let b:colors_name = 'colorscheme 1'
        \ | endif
    \ | endif
    \ | exe 'colorscheme' b:colors_name
augroup END 

还有一个问题:
当我单击缓冲区时,上面的代码会更改拆分窗口中所有文件的颜色方案

有没有办法使用快捷键停用(和重新激活)自动命令?

【问题讨论】:

  • vim如何识别文本文件?
  • @black,在我的情况下没有
  • 是的,明白了...我想问一下 vim '使用'什么类型而不是文本。
  • @black,抱歉,文本文件根本无法识别。
  • 这个成功了:au BufRead,BufNewFile *.txt set filetype=txt

标签: vim detection file-type


【解决方案1】:

您应该能够使用以下自动命令实现接近您想要的效果:

colo <colourscheme1>  "default
autocmd! BufEnter,BufNewFile *.html,*.vim,*xml colo <colourscheme2>
autocmd! BufLeave *.html,*.vim,*xml colo <colourscheme1>

当然,您可以根据需要修改文件扩展名列表。默认情况下,颜色方案为&lt;colourscheme1&gt;,如果您打开(或切换到)任何指定的类型,则为&lt;colourscheme2&gt;,当您在Vim会话中打开(或切换到)任何其他类型时,颜色方案将恢复为&lt;colourscheme1&gt; .

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多