23


在我的 .vimrc 文件中,我有两行非常有用的行:

set path=~/nbapp/**
set backupdir=~/nbapp/temp

第一行允许我在我的项目目录和子目录中进行搜索。第二行让 vim 在一个特殊的临时文件夹中创建备份文件,而不是通过添加数十个名称完全相同的备份文件来打扰我,除了末尾的“~”。但是,由于临时文件仍在“nbapp”文件夹中(我想将它们保留在那里,因为它们与项目相关),这意味着当我进行搜索时它们也会被搜索,这有时会打扰我,因为我一直在查看搜索结果,但发现它们实际上在临时文件夹中。

有没有办法从搜索中排除路径(即 vimgrep)?我想排除“临时”文件夹。

问候,
拉菲德

4

5 回答 5

27

使用 'wildignore' 选项:

:set wildignore+=**/temp/**

或者如果您想更具体:

:set wildignore+=~/nbapp/temp/**

这应该在 :find 结果中排除 nbapp/temp 目录中的所有文件。

于 2010-11-29T16:04:54.317 回答
6

我使用 grep 命令代替 vimgrep

:help grep

我使用设置

set grepprg=grep\ -nIh\ --exclude=tags\ --exclude=cscope.out

当我想搜索文件但不包括标记文件和 cscope 文件时。您可以修改上述内容以不搜索任何以 ~ 结尾的文件。我认为您不能使用 grep 排除该文件夹(或者您可以尝试 --exclude=~/nbapp/temp/* 它可能有效,我尚未测试过)。

如果这不起作用,我建议对 grepprg 使用 ack 而不是 grep。ack 作为选项 ignore-dir=name 您可以在其中显式忽略文件夹。

于 2010-11-28T16:45:36.623 回答
5

要从:findgf(例如node_modules)中排除一些目录,您可以设置:

:set path=**
:set wildignore+=*/node_modules/*
于 2017-10-07T12:26:01.283 回答
0

例如在 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 打开搜索框,玩得开心
于 2013-05-26T21:02:48.687 回答
-1
set path-=~/nbapp/temp

是删除路径条目的首选方法,因为它可以保护您免受可能修改 'path' 值的 vim 升级。

于 2010-11-28T16:15:54.097 回答