我想知道是否有方法讓vim讀取.gitignore文件並使用它們來確定自動完成文件名時不顯示的選項。我可以讓vim尊重我的.gitignore文件嗎?
例如,在python中工作,我不想看到提供編輯的.pyc文件。我認爲vim有它自己的機制,我想知道如何從.gitignore加載信息到它。
我想知道是否有方法讓vim讀取.gitignore文件並使用它們來確定自動完成文件名時不顯示的選項。我可以讓vim尊重我的.gitignore文件嗎?
例如,在python中工作,我不想看到提供編輯的.pyc文件。我認爲vim有它自己的機制,我想知道如何從.gitignore加載信息到它。
至於建議的@dwc,這裏有一個VIM腳本:
let filename = '.gitignore'
if filereadable(filename)
let igstring = ''
for oline in readfile(filename)
let line = substitute(oline, '\s|\n|\r', '', "g")
if line =~ '^#' | con | endif
if line == '' | con | endif
if line =~ '^!' | con | endif
if line =~ '/$' | let igstring .= "," . line . "*" | con | endif
let igstring .= "," . line
endfor
let execstring = "set wildignore=".substitute(igstring, '^,', '', "g")
execute execstring
endif
採取這一來源,並把它在你的插件目錄中的文件,如~/.vim/plugin/gitignore.vim
。它會讀取您的.gitignore
文件並解析它,將其格式轉換爲適合wildignore
的格式,然後設置該選項。
限制:
.gitignore
文件。沒有努力去尋找其他.gitignore
文件並解析它們。或者,您可以在第一行指定文件的絕對路徑。wildignore
選項不支持的概念否定忽略像你可以在.gitignore
文件。也就是說,你不能說:set wildignore=*.html,!foo.html
讓它忽略除foo.html
之外的所有html文件。因此,.gitignore
行開頭!簡單地被忽略。Vim會忽略選項wildignore
指定文件模式,所以你可以將它們像這樣:
:set wildignore=*.o,*~,*.pyc
,或將同一行(不帶「:」)在你的〜/ .vimrc文件。如果你需要一些更加動態的東西來調整當前目錄中的.gitignore,那麼你需要做一些腳本,但是我會把它作爲別人的練習。
很好的回答。注意:\ *。o \ *〜和* *。pyc之間不能有空格,所以它應該是:`:set wildignore = *。o,*〜,*。pyc`。乾杯 – 2010-02-15 15:36:41
我寫了一個插件這樣的:https://github.com/octref/RootIgnore
它可以自動添加.gitignore
模式,以您的wildignore。
一些方便的功能:
my_proj/ .gitignore .git/ sub/
如果你cd到子,和開放的Vim那裏,插件進入遞歸地找到.gitignore
並將其添加到wildignore
。
let g:RootIgnoreUseHome = 1
輕鬆添加~/.gitignore
規則。
僅供參考,以下是vim.org上的代碼:http://www.vim。org/scripts/script.php?script_id = 2557 – Florian 2012-03-26 09:32:21