當我打算打開關聯的源代碼「foo.cpp」時,我經常意外打開二進制可執行文件,即「foo」。問題的根源在於選項卡完成,即:e fo<tab>
通常落在二進制文件而不是源代碼上。防止vim意外打開二進制文件?
有沒有辦法讓vim只能標籤文本文件的完整名稱?或者,也可以更改標籤完成順序?
有時我的hasty tab完成錯誤發生在vim之外;對於這些情況,防止vim打開非文本文件的最佳方法是什麼?
當我打算打開關聯的源代碼「foo.cpp」時,我經常意外打開二進制可執行文件,即「foo」。問題的根源在於選項卡完成,即:e fo<tab>
通常落在二進制文件而不是源代碼上。防止vim意外打開二進制文件?
有沒有辦法讓vim只能標籤文本文件的完整名稱?或者,也可以更改標籤完成順序?
有時我的hasty tab完成錯誤發生在vim之外;對於這些情況,防止vim打開非文本文件的最佳方法是什麼?
你是不是需要什麼,但是我有這樣的事情在我的.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
來自後綴help的幫助選項:「一個空條目,連續兩個逗號,匹配的文件名不包含 包含」。「,因此沒有後綴。這對忽略「prog」很有用,而且更喜歡 「prog.c」。「 – taro 2011-04-26 17:14:07
對於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'
應該不會太困難修改這個邏輯來得到你想要的(如果你使用巖組)。
「此網頁」的鏈接已損壞:http://bodhizazen.net/Tutorials/zshrc – 2017-07-11 19:03:29
@AlexanderGuo您的鏈接導致一個垃圾郵件網站。 – Diti 2017-09-20 14:11:56
@Diti我說:「...的鏈接被打破了」,geezus – 2017-09-20 20:50:42
也許你能找到這個有用:
set wildmenu
set wildmode=longest,list
(取出並使用從How do I make vim do normal (bash like) tab completion for file names?)
怎麼會知道vim的,如果是二進制文件或不?它必須打開並檢查它們,這對於製表符完成非常重要。即使文件是可執行的,它仍然可以是純文本。 – 2011-04-26 16:16:32
它可以忽略沒有後綴且標記爲可執行文件的文件。 (此外,檢查第一個字節並緩存結果並不那麼重) – Federico 2016-11-17 14:53:38