防止vim意外打开二进制文件?

问题描述:

当我打算打开关联的源代码“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

你是不是需要什么,但是我有这样的事情在我的.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

对于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

也许你能找到这个有用:

set wildmenu 
set wildmode=longest,list 

(取出并使用从How do I make vim do normal (bash like) tab completion for file names?