说,我的项目中有文件foo.js和bar.css。 vim中有一个“:find”命令,用于查找匹配字符串的文件。但是,这个命令有一些局限性。例如,如果我以这种方式启动 - “vim”,甚至是这种方式 - “vim”。 - 在js子目录中找不到任何东西。但是如果我以这种方式启动vim - “vim js / any_file_other_than_foo.js”,那么调用“:find foo.js”就可以了。
由于它不直观(我在同一个目录中工作,“pwd”返回相同的路径),我的第一个问题是 - 有人可以解释如何绕过这个问题吗?甚至更广泛的是,有没有办法输入类似find foo的东西 - 并打开第一个文件,其名称与模式foo匹配。
提前感谢。
答案 0 :(得分:7)
你可以尝试
:e[dit] **/*foo*
,然后按“标签”移至第一场比赛。
**
是目录通配模式,而*
是字符匹配。
如果您如此倾向,可以编写一个简单的模糊查找器命令,有关更多信息,您可以查看vim提示wiki:http://vim.wikia.com/wiki/Find_files_in_subdirectories
答案 1 :(得分:4)
Vim的:find
通过搜索path
变量中的每个目录(并忽略pwd)来工作。默认情况下,它会递归不搜索。这就是为什么当你打开一个js文件时,find只对你有用。 '。' in path指的是当前文件的目录 - 不是pwd。
您可以更改路径以包含所需目录:
set path+=$PROJECT/js
请参阅:help path
。
使用的一个神奇的位是将**添加到路径中以递归方式搜索该路径:
" search recursively in my project
set path+=$PROJECT/**
" search recursively from the current file's directory
set path+=./**
请参阅:help file-searching
了解更多魔力。
答案 2 :(得分:2)
一个实现类似效果的好插件是Command-T。
Command-T插件提供了一个 极其快速,直观的机制 用于打开最小的文件 击键次数。它被命名了 “Command-T”因为它受到了启发 绑定到“转到文件”窗口 TextMate中的Command-T。
通过键入选择文件 出现在路径中的字符, 并按算法排序 知道出现的字符 某些地点(例如, 路径分隔符后立即) 应该给予更多的重量。应该给予更多的重量。
以下是Command-T的screencast。