我正在寻找一种让Vim能够通过模糊搜索其名称来打开文件的方法。
基本上,我希望能够定义一个项目,然后有一个快捷方式,它将为我提供一个键入文件名的位置,并且如果有任何字母匹配,它将匹配。
这种功能存在于我见过的大多数编辑中,但对于我的生活,我无法理解如何让Vim这样做。
请注意,我正在寻找不会要求我知道目录树中文件位置的内容。我只是希望能够通过文件名打开它,无论它在哪个目录中。
由于
答案 0 :(得分:55)
有两个很棒的vim插件。
<强> ctrlp 强>
<强> Command-T 强>
+ruby
支持7.3
修改强>
我使用CtrlP和ag作为我的自定义查找器,它非常快(即使在大型项目中)也非常便携。
if executable('ag')
" Use Ag over Grep
set grepprg=ag\ --nogroup\ --nocolor
" Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
endif
答案 1 :(得分:3)
CommandT for Vim与TextMate的功能相当。我的工作流程现在是
1)打开MacVim
2):cd~ / my_project
3)(我按照安装帮助中的描述进行了映射)
4)C-v文件以垂直分割打开文件,或CR以打开新的水平分割。
5)关闭分割,使用:bd(缓冲区删除)
6)切换到另一个缓冲区,我安装了BufferExplorer,所以只需要选择
这个工作流程与TextMate相当,需要一段时间才能习惯,而且我还在学习。
答案 2 :(得分:2)
http://www.vim.org/scripts/script.php?script_id=1984怎么样?http://github.com/jamis/fuzzy_file_finder。
另请参阅以下博文:http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim和http://weblog.jamisbuck.org/2009/1/28/the-future-of-fuzzyfinder-textmate
HTH
答案 3 :(得分:1)
只需将此添加到您的.vimrc
nnoremap <C-p> :find ./**/*
现在按Ctrl + p将允许您在当前工作目录及其子目录中模糊查找文件。使用Tab键可循环浏览选项。
对于那些希望保持基本状态(即没有插件)的人来说,这种有趣的video显示了另一种在vim中实现模糊文件查找的方法。
他们实际使用
set path+=**
set wildmenu
在其.vimrc文件中查找当前子目录中的文件。
例如,在:find *Murph
后跟随制表符,我会在子目录 code 中找到文件 KilianMurphy2012Why.R 和 KilianMurphy2014ROLE.R 。 em>,我可以使用Tab键循环浏览。上面的第一个解决方案的优点是,还显示了相对路径。
请注意,当前的工作目录将很重要,并且使用这种解决方案还可以找到路径(:set path?
)上的其他文件。 wildmenu
选项可添加视觉信息,并非必不可少。
要获取键盘快捷键,请添加
nnoremap <C-p> :find *
到您的.vimrc。现在,您可以在正常模式下使用Ctrl + p快速搜索项目/当前目录中的文件。