2016-05-24 25 views
0

我找到了this,如果它超過特定寬度,我可以突出顯示代碼。但是,我不希望這樣的文本文件(如LaTeX)。因此,我嘗試過(在我的.vimrc):僅在VIM中針對特定文件類型運行設置

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

我在做什麼錯?所有代碼/文本都突出顯示,即使是其他類型。我的LaTeX文件是.Rnw,因此set ft產生rnoweb

回答

1

.vimrc在啓動時只能讀取一次。所以這是一個正確的地方來定義一個亮點(不加任何條件):

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

但是,如果你想在每次打開一個文件(有或沒有條件)一次比賽,你必須來包裝你一個自動(在你的.vimrc)內:match命令,例如:

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

我複製了,但仍然突出顯示每次。有沒有其他陷阱? – Xiphias

+0

@Xiphias'&ft!='r''會匹配太多東西。我認爲這種情況是不正確的。順便說一句,我已經去了一個'is_a_text_ft()'函數。 (好吧,[我確實是](https://github.com/LucHermitte/lh-vim-lib/blob/master/autoload/lh/ft.vim#L53)) –

+0

@Luc Hermitte:哈,對我很慚愧。我只交換了'=='和'!=',但保留了'||'而不是'&&'。現在它的工作原理:-)感謝您的參考,但該代碼高於我的vimscript能力。我會堅持以上:-) – Xiphias

0

Vim有語法文件這種類型的文件的特定語法高亮的。

您應該在您的~/.vim/syntax/目錄下(在非Windows機器上)創建python.vim。那麼下面添加到python.vim

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

這樣你vimrc保持清潔,並用大量的文件類型特定的代碼沒有得到凌亂。

請參閱:h syn-files以閱讀有關語法文件的更多信息。

相關問題