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

时间:2011-04-26 16:14:10

标签: vim autocomplete

当我打算打开相关的源代码“foo.cpp”时,我经常不小心打开二进制可执行文件,即“foo”。问题的根源是标签完成,即:e fo<tab>通常落在二进制而不是源代码上。

有没有办法让vim只显示文本文件的完整名称?或者,更改选项卡完成顺序?

有时我的仓促标签完成错误发生在vim之外;对于那些情况,阻止vim打开非文本文件的最佳方法是什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

对于vim之外的选项卡完成,这取决于你的shell。大多数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'

修改此逻辑以获得所需内容(如果使用Zsh)应该不会太困难。

答案 2 :(得分:1)

也许你会发现这很有用:

set wildmenu
set wildmode=longest,list

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