2

我最近发现了以下在 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*

可以,但找不到文件。

有人可以照亮我吗?

4

3 回答 3

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 的内置文件处理并非如此。

于 2013-01-24T08:47:27.847 回答
3

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

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

于 2013-01-23T23:41:20.157 回答
0

如果您想要的只是简单的 :find 类型功能,但部分文件名与选项卡自动完成匹配,那么find-complete插件很好。

于 2013-02-06T08:46:39.497 回答