仅在特定文件类型的VIM中运行设置

时间:2016-05-24 12:53:43

标签: vim

我找到this,如果超过某个宽度我可以突出显示代码。但是,我不希望它用于文本文件(如LaTeX)。因此,我尝试过(在.vimrc中):

if (&ft=='python' || &ft!='r')
    highlight OverLength ctermbg=red ctermfg=white guibg=#FFD9D9
    match OverLength /\%81v.\+/
endif

我做错了什么?即使对于其他类型,也会突出显示所有代码/文本。我的LaTeX文件为.Rnw,因此set ft会产生rnoweb

2 个答案:

答案 0 :(得分:1)

.vimrc在启动时只读一次。因此,它是定义突出显示的正确位置(不添加任何条件):

highlight OverLength ctermbg=red ctermfg=white guibg=#FFD9D9

但是如果你想在每次打开文件时(有或没有条件)进行匹配,你必须将:match命令包装在自动命令(在.vimrc中)中,例如:

au BufReadPost * if &ft=='python' || &ft!='r' | match OverLength /\%81v.\+/ | endif

答案 1 :(得分:0)

Vim具有此类文件特定语法突出显示的语法文件。

您应该在python.vim目录下创建~/.vim/syntax/(在非Windows计算机上)。然后将以下内容添加到python.vim

highlight OverLength ctermbg=red ctermfg=white guibg=#FFD9D9
match OverLength /\%81v.\+/

这样,您的vimrc仍然保持干净,并且不会出现大量特定于文件类型的代码。

请参阅:h syn-files以阅读有关语法文件的更多信息。