我正在寻找一种方法,使 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,所以只需 e 并选择
这个工作流程与TextMate相当,需要一段时间来适应,我还在学习中。
只需将其添加到您的 .vimrc 中
nnoremap <C-p> :find ./**/*
按 Ctrl+p 现在可以模糊查找当前工作目录及其子目录中的文件。使用 Tab 键循环选择选项。
对于那些想要保持基本(即没有插件)的人,这个有趣的视频展示了在vim中实现模糊文件查找的另一种方法。
他们实际上使用
set path+=**
set wildmenu
在其 .vimrc 中查找当前子目录中的文件。
例如,使用
:find *Murph
后跟选项卡,我会在子目录 code 中找到文件 KilianMurphy2012Why.R 和 KilianMurphy2014ROLE.R,我可以使用 Tab 键循环浏览这些文件。上面第一个解决方案的优点是还显示了相对路径。
请注意,您当前的工作目录很重要,并且您的路径 (
:set path?
) 上的其他文件也可以通过此类解决方案找到。 wildmenu
选项可添加视觉信息,但不是必需的。
对于键盘快捷键,添加
nnoremap <C-p> :find *
到你的.vimrc。现在,您将能够在正常模式下使用 Ctrl+p 快速搜索项目/当前目录中的文件。
fzf是一个强大的模糊文件查找工具,并且有vim集成。查看官方安装说明或继续阅读简短的安装指南:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
call plug#begin()
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
call plug#end()
:PlugInstall
)$ vim +:PlugInstall
现在您可以在 vim 中运行
:Files
进行模糊文件搜索。
您可以将自己的快捷键添加到您的
vimrc
,例如以下的control+p:
nnoremap <C-p> :Files<cr>