在Vim中,我经常使用vimgrep搜索。我有Map如下:
map <leader>s :execute "noautocmd vimgrep /\\<" . expand("<cword>") . "\\>/gj **/*.*" <Bar> cw<CR> 5
问题是,有一些临时的对象(如obj,objd),我不想搜索。如何排除与给定模式匹配的搜索引擎。例如,搜索中不应包括前缀为“objd”的搜索结果。
wr98u20j1#
从Vim 7.3.570开始,您可以使用wildignore来排除vimgrep中的模式。例如,要忽略objd子文件夹:
:set wildignore+=objd/**
可以通过用逗号分隔模式来添加其他排除:
:set wildignore+=objd/**,obj/**,*.tmp,test.c
请参阅Vim的帮助文档了解更多细节。
:help wildignore
jjjwad0x2#
如http://vimcasts.org/blog/2013/03/combining-vimgrep-with-git-ls-files/中所示,您可以包含要搜索的文件,而不是排除文件。所以你可以在Git跟踪的文件中搜索,
:noautocmd vimgrep /{pattern}/gj `git ls-files`
这样,您就不会搜索.gitignore中指定的文件。我经常使用它,我为此创建了一个命令,所以我只需要
.gitignore
:Sch {pattern}
我通过在.vimrc中添加以下行来实现
command -nargs=1 Sch noautocmd vimgrep /<args>/gj `git ls-files` | cw
q0qdq0h23#
你可以试试ack。它与Vim很好地集成在一起,并且有很多选项来做你想做的事情。GitHub上有几个ack-vim集成。举例来说:here。
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
fnatzsnv5#
似乎也忽略了根目录上的node_modules文件夹以及node_modules是否在子目录中。
node_modules
set wildignore+=*/node_modules/**
5条答案
按热度按时间wr98u20j1#
从Vim 7.3.570开始,您可以使用wildignore来排除vimgrep中的模式。
例如,要忽略objd子文件夹:
可以通过用逗号分隔模式来添加其他排除:
请参阅Vim的帮助文档了解更多细节。
jjjwad0x2#
如http://vimcasts.org/blog/2013/03/combining-vimgrep-with-git-ls-files/中所示,您可以包含要搜索的文件,而不是排除文件。所以你可以在Git跟踪的文件中搜索,
这样,您就不会搜索
.gitignore
中指定的文件。我经常使用它,我为此创建了一个命令,所以我只需要
我通过在.vimrc中添加以下行来实现
q0qdq0h23#
你可以试试ack。它与Vim很好地集成在一起,并且有很多选项来做你想做的事情。
GitHub上有几个ack-vim集成。举例来说:here。
i5desfxk4#
例如,在Ubuntu中,
然后安装http://www.vim.org/scripts/script.php?script_id=2572
现在将下一行添加到.vimrc中
fnatzsnv5#
似乎也忽略了根目录上的
node_modules
文件夹以及node_modules
是否在子目录中。