在vim中查找文件:如何与Explore ** / *进行部分文件名匹配

时间:2013-01-23 23:38:27

标签: file search vim

我最近发现以下内容在Vim中查找文件。

 :Explore **/[pattern]

查找文件对我来说非常重要,我无法相信我已经8年没有这样做了。我可以谈谈这位先生所说的话:http://vim.wikia.com/wiki/Find_files_in_subdirectories

我看到人们在TextMate中搜索文件并且不得不羞愧地说:(

所以使用上面我能够“理论上”搜索文件,但是输出让我困惑,并且经常有不匹配的文件。我将使用Rails示例。

例如,这样做:

Explore **/envir*

产生这个,这是一堆额外奇怪的文件:

../
deploy/
environments/
initializers/
locales/
.DS_Store
application.rb
authorization_rules.rb
boot.rb
config.yml
database.yml
deploy.rb
development.sphinx.conf
environment.rb
production.sphinx.conf
routes.rb
sphinx.yml
staging.sphinx.conf
test.sphinx.conf

这至少是可用的,我可以向下滚动到environment.rb并打开它。

但是说我想找到所有助手的清单。我认为这个:

Explore **/*help*

可行,但找不到文件。

有人可以照亮我吗?

3 个答案:

答案 0 :(得分:3)

你看过Ctrl-P.vim插件吗? https://github.com/kien/ctrlp.vim

此插件以与您显示的方式类似的方式查找文件。

答案 1 :(得分:3)

不,:Ex[plore] **/foo*很糟糕。

上面提到的CtrlP是一种美(尽管有一些限制,我广泛使用),它允许您在项目和其他细节中查找文件。 FuzzyFinderCommand-T也是值得的替代方案,LustyExplorer也有很多其他选择。

但是Vim自己很有能力。这里是wildmenu选项的关键。只需将这两行添加到~/.vimrc

即可
set wildmenu           " see :h 'wildmenu'
set wildmode=list:full " see :h 'wildmode' for all the possible values

通过上面的设置,以下命令会显示一个准确的匹配列表,您可以轻松且相对直观地导航。

:e **/foo*<Tab>        " see :h starstar

如果将“工作目录”设置为项目目录,那么该命令肯定会给您带来好的结果。它不是很性感(虽然我喜欢它),但它非常有效且可靠。当然,此方法可以与:sp:vs:tabe一起使用。

:find命令甚至更好,可能更适合您的需求:它会查看path选项中定义的目录。在会话开始时:set path=/path/to/project,您可以使用以下命令打开项目中的任何文件:

:find foo<tab>         " see :h :find

另一种可能性是使用“args”。您将匹配某些模式的所有文件添加到“参数列表”并使用缓冲区导航命令:

:argadd ./**/*.js      " see :h arglist
:sb foo<tab>

但它可能有点混乱。

总的来说,在Vim中有很多优雅的方法来处理文件导航(我甚至没有提到基于tags的导航!)。插件可以为许多导航需求提供良好的统一UI,但它们不是有效查找文件所必需的。完全没有。

值得注意的是,TextMate和Sublime Text的模糊搜索实现实际上仅限于当前的“项目”,而不是那些Vim插件或Vim的buit-in文件处理。

答案 2 :(得分:0)

如果您想要的只是简单:找到类型功能但部分文件名与选项卡自动完成匹配,find-complete插件就可以了。