2014-11-08 65 views
1

我在筆記本電腦上記錄了控制檯vim中的筆記,並且 我想按照 的順序向筆記添加語法高亮顯示以加強它們。然而,我不想爲每個知識領域 添加一個 百萬不同的文件類型(例如我的編譯器筆記將有不同的 關鍵字比我在FHS上的筆記),我也想 可以很容易地分享這些筆記。在做了一些 研究後,我發現我可以得到我想要的行爲,但它看起來不是一個非常優雅的解決方案。 添加以下行到我的.vimrc將vim語法文件保存在與文檔相同的目錄中

if (filereadable("./.custom_syntax.vim") 
    let mysyntaxfile = "./.custom_syntax.vim" 
    syntax enable 
else 
    syntax enable 
endif 

我真的不喜歡這個方案,因爲它仍然 要求我要求他們修改其.vimrc,但我 懷疑,有沒有辦法做到這一點而不會在其系統上更改任何內容。此外,如果我在目錄中有任何 文件不是註釋,vim仍然會 使用.custom_syntax.vim文件突出顯示它們,因爲 我不知道文件類型是什麼。

有沒有更好的方法來解決這個問題?

回答

0

而不是使用舊的mysyntaxfile變量,我只是:syntax enable(一次),然後:source語法文件。您可以定義一個:autocmd,看起來一個同名的文件Vimscript中除了原始的:

" Automatically source an eponymous <file>.vim or <file>.<ext>.vim if it exists, as a bulked-up 
" modeline and to provide file-specific customizations. 
function! s:AutoSource() 
    let l:testedScripts = [expand('<afile>') . '.vim'] 
    if expand('<afile>:e') !=# 'vim' 
     " Don't source the edited Vimscript file itself. 
     call add(l:testedScripts, expand('<afile>:r') . '.vim') 
    endif 

    for l:filespec in l:testedScripts 
     if filereadable(l:filespec) 
      execute 'source' fnameescape(l:filespec) 
     endif 
    endfor 
endfunction 
augroup AutoSource 
    autocmd! BufNewFile,BufRead * call <SID>AutoSource() 
augroup END 

你確實需要這樣或這樣的事情在你的vim的配置,雖然。