Vim:忽略搜索中的特殊路径

时间:2010-11-28 09:41:25

标签: search vim findinfiles


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

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

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

有没有办法从搜索中排除路径(即vimgrep)?我想排除'temp'文件夹。

的问候,
Rafid

5 个答案:

答案 0 :(得分:22)

使用'wildignore'选项:

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

或者如果您想更具体:

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

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

答案 1 :(得分:5)

我使用grep命令

而不是vimgrep
:help grep

我使用设置

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

当我想搜索文件但排除标记文件和cscope文件时。 你可以修改上面的内容,不要搜索任何以〜结尾的文件。 我不认为你可以使用grep排除文件夹(或者你可以,尝试--exclude =〜/ nbapp / temp / *它可能工作我还没有测试过。)

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

答案 2 :(得分:2)

:findgf排除某些目录(例如node_modules) 你可以设置:

:set path=**
:set wildignore+=*/node_modules/*

答案 3 :(得分: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的开放搜索框架,玩得开心

答案 4 :(得分:-1)

set path-=~/nbapp/temp

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