[英]How do I match the file name from different directories and replace the partial filename with the actual filename?
[英]Find files in vim: how to do a partial filename match with Explore **/*
我最近发现以下内容可在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*
可以,但是找不到文件。
有人可以照亮我吗?
您看过Ctrl-P.vim插件了吗? https://github.com/kien/ctrlp.vim
该插件以与您显示的方式相似的方式查找文件。
不, :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的内置文件处理则不是这种情况。
如果您想要的只是简单的:find类型功能,但部分文件名与Tab自动完成匹配,那么find-complete插件很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.