如何在vimgrep中排除文件模式?

6vl6ewon  于 2023-10-20  发布在  其他
关注(0)|答案(5)|浏览(165)

在Vim中,我经常使用vimgrep搜索。我有Map如下:

map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*.*" <Bar> 
cw<CR> 5

问题是,有一些临时的对象(如obj,objd),我不想搜索。如何排除与给定模式匹配的搜索引擎。例如,搜索中不应包括前缀为“objd”的搜索结果。

wr98u20j

wr98u20j1#

从Vim 7.3.570开始,您可以使用wildignore来排除vimgrep中的模式。
例如,要忽略objd子文件夹:

:set wildignore+=objd/**

可以通过用逗号分隔模式来添加其他排除:

:set wildignore+=objd/**,obj/**,*.tmp,test.c

请参阅Vim的帮助文档了解更多细节。

:help wildignore
jjjwad0x

jjjwad0x2#

http://vimcasts.org/blog/2013/03/combining-vimgrep-with-git-ls-files/中所示,您可以包含要搜索的文件,而不是排除文件。所以你可以在Git跟踪的文件中搜索,

:noautocmd vimgrep /{pattern}/gj `git ls-files`

这样,您就不会搜索.gitignore中指定的文件。
我经常使用它,我为此创建了一个命令,所以我只需要

:Sch {pattern}

我通过在.vimrc中添加以下行来实现

command -nargs=1 Sch noautocmd vimgrep /<args>/gj `git ls-files` | cw
q0qdq0h2

q0qdq0h23#

你可以试试ack。它与Vim很好地集成在一起,并且有很多选项来做你想做的事情。
GitHub上有几个ack-vim集成。举例来说:here

i5desfxk

i5desfxk4#

例如,在Ubuntu中,

sudo apt-get install ack-grep

sudo ln -s /usr/bin/ack-grep /usr/bin/ack

然后安装http://www.vim.org/scripts/script.php?script_id=2572
现在将下一行添加到.vimrc中

noremap <C-f> :copen<CR>:Ack --ignore-dir #first_ignore_dir# --ignore-dir #second_ignore_dir# -ai
  • 它的开放搜索框架由Ctr+F,有乐趣
fnatzsnv

fnatzsnv5#

似乎也忽略了根目录上的node_modules文件夹以及node_modules是否在子目录中。

set wildignore+=*/node_modules/**

相关问题