当我打算打开相关的源代码“foo.cpp”时,我经常不小心打开二进制可执行文件,即“foo”。问题的根源是标签完成,即:e fo<tab>
通常落在二进制而不是源代码上。
有没有办法让vim只显示文本文件的完整名称?或者,更改选项卡完成顺序?
有时我的仓促标签完成错误发生在vim之外;对于那些情况,阻止vim打开非文本文件的最佳方法是什么?
答案 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?获取并使用)