我最近发现以下内容在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*
可行,但找不到文件。
有人可以照亮我吗?
答案 0 :(得分:3)
你看过Ctrl-P.vim插件吗? https://github.com/kien/ctrlp.vim
此插件以与您显示的方式类似的方式查找文件。
答案 1 :(得分:3)
不,:Ex[plore] **/foo*
很糟糕。
上面提到的CtrlP是一种美(尽管有一些限制,我广泛使用),它允许您在项目和其他细节中查找文件。 FuzzyFinder和Command-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插件就可以了。