我严格使用vim,但是我尝试了emacs并喜欢上了ido-mode的文件打开方式。只需要输入文件名的一部分,它就会缩小搜索范围,当你想要的文件出现在列表前面时,只需按回车键即可。vim有类似的功能吗?我已经搜索了很久也没有找到。谢谢。
Vim具有文件名的制表符完成功能,但不幸的是,它显示整个第一个匹配项,而不是像bash制表符完成一样在达到歧义时停止。
根据您想要完成的任务,您有以下选项:
如果你想要完成以 $HOME、/etc 或其他包含许多文件的目录开头的文件名,你可以尝试模糊查找器(由 @michael 提到)或我的 zvim 插件(整个插件处于 alpha 版本,但 :ZEdit
和 :ZView
命令足够稳定)。使用我的插件,你将获得类似于 zsh 的自动补全,虽然不完全符合你的要求,但也很好。例如:
ZE ++e=u<Tab><Tab> ~/.v/d/z/p/v<Tab>
将会扩展为(使用 &wildmode="longest,list:full"
)
ZE ++enc=utf-8 ~/.vim/dev/zvim/plugin/z.vim
当然,这需要你知道 z.vim
(或任何你想要查找的文件)位于哪里。
// 要安装 zvim,请安装 vim-addon-manager 和 mercurial,并在你的 vimrc 中添加 call scriptmanager#Activate(["zvim"])
行。
如果你想要查找项目文件(当前目录下的文件),可以尝试 Command-T 插件。它需要 ruby 支持并索引文件,因此无法用于查找以 home 目录开头的文件。
我有同样的问题,解决方法是“:help wildmode”。我个人使用
set wildmenu
set wildmode=longest:full,full
:set wildmode=list:longest
; 这类似于bash的行为。 - daniel kullmann