在vim中,我经常使用vimgrep进行搜索。我有如下的映射:
map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*.*" <Bar>
cw<CR> 5
问题是有一些临时子文件夹(如obj、objd)是我不想搜索的。如何排除与给定模式匹配的子文件夹。例如,搜索中不应包括前缀为"objd“的子文件夹。
发布于 2013-11-18 15:09:57
从Vim 7.3.570开始,您可以使用wildignore来排除带有vimgrep的模式。
例如,要忽略objd子文件夹:
:set wildignore+=objd/**
可以通过用逗号分隔模式来添加其他排除项:
:set wildignore+=objd/**,obj/**,*.tmp,test.c
有关更多详细信息,请参阅Vim的帮助文档。
:help wildignore
发布于 2019-12-31 20:18:09
如http://vimcasts.org/blog/2013/03/combining-vimgrep-with-git-ls-files/所示,您可以包含要搜索的文件,而不是排除文件。这样你就可以在Git跟踪的文件中搜索
:noautocmd vimgrep /{pattern}/gj `git ls-files`
我经常使用它,我为此创建了一个命令,所以我只需要
:Sch {pattern}
我将下面这行代码添加到我的.vimrc中
command -nargs=1 Sch noautocmd vimgrep /<args>/gj `git ls-files` | cw
这样,您就不会搜索.gitignore
中声明的文件。
https://stackoverflow.com/questions/1898987
复制相似问题