如何驯服vim的“:find”命令

时间:2010-09-17 06:30:50

标签: vim

说,我的项目中有文件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匹配。

提前感谢。

3 个答案:

答案 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