我想找到一种方法让Vim能够通过模糊搜索文件名的方式来打开文件。
基本上,我想定义一个项目,并有一个快捷键,让我能够输入一个文件名,在输入时它会匹配所有相关字母。
大多数编辑器都具备这样的功能,但我却不知道如何在Vim中实现。
请注意,我寻找的是一种不需要我知道文件在目录树中位置的解决方案。我只需要通过文件名来打开它,而不用管它在哪个目录下。
谢谢
我想找到一种方法让Vim能够通过模糊搜索文件名的方式来打开文件。
基本上,我想定义一个项目,并有一个快捷键,让我能够输入一个文件名,在输入时它会匹配所有相关字母。
大多数编辑器都具备这样的功能,但我却不知道如何在Vim中实现。
请注意,我寻找的是一种不需要我知道文件在目录树中位置的解决方案。我只需要通过文件名来打开它,而不用管它在哪个目录下。
谢谢
有两个极好的vim插件可以做到这一点。
+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
Vim的CommandT功能与TextMate相似。我的工作流程如下:
1)打开MacVim
2):cd ~/my_project
3)(我已按照安装帮助中所述进行了映射)
4)使用C-v在垂直分割中打开文件,或者使用CR打开新的水平分割。
5)要关闭分割,请使用:bd(缓冲区删除)
6)要切换到另一个缓冲区,我安装了BufferExplorer,只需使用\be并选择即可。
这个工作流程与TextMate相似,需要一段时间来适应,我仍在学习中。
只需将以下内容添加到您的 .vimrc 文件中即可:
nnoremap <C-p> :find ./**/*
现在按下Ctrl + p将允许您模糊查找当前工作目录及其子目录中的文件。使用Tab键循环浏览选项。
对于那些想保持基本设置即无插件的人,这个有趣的视频展示了另一种在vim中实现模糊文件查找的方法。
他们实际上使用的是
set path+=**
set wildmenu
在他们的 .vimrc 文件中,可以使用以下命令在当前子目录中查找文件。
例如,通过执行命令 :find *Murph
并按下 Tab 键,可以找到子目录 code 中的文件 KilianMurphy2012Why.R 和 KilianMurphy2014ROLE.R。我们可以使用 Tab 键在它们之间进行切换。第一种解决方案的优点是它还会显示相对路径。
请注意,您的当前工作目录很重要,并且您路径上的其他文件(:set path?
)也会被此类型的解决方案找到。选项 wildmenu
可以添加可视化信息,但不是必需的。
如果想要添加一个键盘快捷键,请
nnoremap <C-p> :find *