我最喜欢的vim功能之一就是能够做到
set path=/my/project/root/**
然后使用
:find SomeClassFile.java
唯一的问题是,我在该级别有一些生成的目录,我无法移动并希望从这些搜索中排除。我似乎无法弄清楚如何排除这些目标。任何人都知道如何做到这一点?
答案 0 :(得分:3)
我很确定您无法从"**"
搜索中排除内容。相反,您可以指定不包含生成代码的子目录下的所有子目录,例如
set path=/my/project/root/src/**,/my/project/root/com/**,/my/project/root/foo/**
答案 1 :(得分:2)
我不知道使用vim语法的方法,但你可以自己创建一个.vimrc.proj文件(我的命名约定),并用你想要的与该项目有关的任何内容填充它,然后'source'它。
所以,你会在/my/project/root/.vimrc.proj中使用以下内容(使用Paul Tomblin的例子):
设置路径= / my / project / root / src / **,/ my / project / root / com / **,/ my / project / root / foo / **
然后从vim内部:
:source /my/project/root/.vimrc.proj
基本上,一旦你设置了文件,设置项目路径的键击次数就会相似。当然,您也可以在其中放置其他项目特定设置,例如cscope映射或其他任何设置。
不可否认,它在文件系统中留下了“掉线”,但很多其他环境都会创建项目文件。
答案 2 :(得分:1)
它应该由& wildignore选项来处理。但是,AFAIK,它没有。 我确实发布了关于这个主题的错误报告,但从那以后我没有看过任何补丁。
与此同时,我开发了一个类似globpath的函数,它忽略了包含不需要的模式的路径(比如/ CVS / eg),并且我在类似find的命令中使用了这个函数。
答案 3 :(得分:1)
我认为您可以通过设置"**"
变量来排除wildignore
搜索中的内容。
例如:
set wildignore+=*.swp,*.bak,*.class
或其他东西链接:
set wildignore+=*/node_modules/*,*/public/lib/*
现在,如果您使用find
命令,则不会搜索这些目录。
答案 4 :(得分:0)
如果您使用类似unix的系统,则可以使用反引号来运行这样的命令行脚本:
:e `find . -name foo.java -print`
所以你可以编写自己的脚本来排除你想要的任何目录。我做了类似的事情,从:grep
排除.svn目录。
有关详细信息,请参阅vim中的:h backtick-expansion
。