使用模糊搜索在Vim中打开文件

时间:2010-03-03 15:04:11

标签: editor text-editor vim

我正在寻找一种让Vim能够通过模糊搜索其名称来打开文件的方法。

基本上,我希望能够定义一个项目,然后有一个快捷方式,它将为我提供一个键入文件名的位置,并且如果有任何字母匹配,它将匹配。

这种功能存在于我见过的大多数编辑中,但对于我的生活,我无法理解如何让Vim这样做。

请注意,我正在寻找不会要求我知道目录树中文件位置的内容。我只是希望能够通过文件名打开它,无论它在哪个目录中。

由于

4 个答案:

答案 0 :(得分:55)

有两个很棒的vim插件。

<强> ctrlp

  • 用纯VimL编写
  • 几乎无处不在
  • 支持自定义查找器以提高性能
  • 最受欢迎的Vim模糊搜索插件

<强> Command-T

  • 用C,VimL和Ruby编写
  • 快速开箱即用
  • 在Vim中需要+ruby支持
  • 推荐Vim版本&gt; = 7.3

修改

我使用CtrlPag作为我的自定义查找器,它非常快(即使在大型项目中)也非常便携。

agCtrlP一起使用的示例:

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)

答案 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快速搜索项目/当前目录中的文件。