2011-04-26 52 views
13

當我打算打開關聯的源代碼「foo.cpp」時,我經常意外打開二進制可執行文件,即「foo」。問題的根源在於選項卡完成,即:e fo<tab>通常落在二進制文件而不是源代碼上。防止vim意外打開二進制文件?

有沒有辦法讓vim只能標籤文本文件的完整名稱?或者,也可以更改標籤完成順序?

有時我的hasty tab完成錯誤發生在vim之外;對於這些情況,防止vim打開非文本文件的最佳方法是什麼?

+3

怎麼會知道vim的,如果是二進制文件或不?它必須打開並檢查它們,這對於製表符完成非常重要。即使文件是可執行的,它仍然可以是純文本。 – 2011-04-26 16:16:32

+0

它可以忽略沒有後綴且標記爲可執行文件的文件。 (此外,檢查第一個字節並緩存結果並不那麼重) – Federico 2016-11-17 14:53:38

回答

17

你是不是需要什麼,但是我有這樣的事情在我的.vimrc

" ignore these files when completing names and in Ex 
set wildignore=.svn,CVS,.git,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif,*.pdf,*.bak,*.beam 
" set of file name suffixes that will be given a lower priority when it comes to matching wildcards 
set suffixes+=.old 
+6

來自後綴help的幫助選項:「一個空條目,連續兩個逗號,匹配的文件名不包含 包含」。「,因此沒有後綴。這對忽略「prog」很有用,而且更喜歡 「prog.c」。「 – taro 2011-04-26 17:14:07

1

對於Vim之外tab完成,這將取決於你的shell。大多數炮彈都有某種形式的自動補全支持。特別地,Zsh能夠自動完成例如遠程主機的SSH。我不是具有這些功能的嚮導,但是當您鍵入的命令以「vim」開頭時,讓shell從自動完成列表中刪除具有某些後綴的文件可能會相對簡單。

快速谷歌搜索調高this page,其中有這樣的:

# Filename suffixes to ignore during completion (except after rm command) 
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' \ 
'*?.old' '*?.pro' 

應該不會太困難修改這個邏輯來得到你想要的(如果你使用巖組)。

+0

「此網頁」的鏈接已損壞:http://bodhizazen.net/Tutorials/zshrc – 2017-07-11 19:03:29

+0

@AlexanderGuo您的鏈接導致一個垃圾郵件網站。 – Diti 2017-09-20 14:11:56

+0

@Diti我說:「...的鏈接被打破了」,geezus – 2017-09-20 20:50:42