2010-11-28 74 views
15


在我的.vimrc文件中特殊的路径,我有两个非常有用行:的Vim:忽略搜索

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

第一行让我在我的项目目录和子目录搜索。第二行使vim在一个特殊的临时文件夹中创建备份文件,而不是在最后添加几十个备份文件,这些备份文件具有完全相同的名称,除了'〜'外。但是,由于临时文件仍在'nbapp'文件夹中(因为它们与项目有关,我想将它们留在那里),这意味着它们在搜索时也将被搜索,这有时会干扰我,因为我一直在查看搜索结果,但发现它们实际上在临时文件夹中。

是否有任何可能的方法排除搜索路径(即vimgrep)?我想排除'temp'文件夹。

问候,
Rafid

回答

-1
set path-=~/nbapp/temp 

是除去路径条目的优选方法,因为它守卫你针对VIM升级,这可能会修改“路径”的值。

+2

这似乎并没有工作!它仍然显示备份文件。 – Rafid 2010-11-29 18:52:03

4

而是使用vimgrep我使用grep命令

:help grep 

我使用的设置

set grepprg=grep\ -nIh\ --exclude=tags\ --exclude=cscope.out 
当我要搜索文件,但不包括该标签的文件和文件cscope的

。 您可以修改上述内容,以便不搜索以〜结尾的任何文件。 我不认为你可以使用grep排除文件夹(或者你也可以尝试--exclude =〜/ nbapp/temp/*它可能工作,我还没有测试过)。

如果这不起作用,我推荐使用grepprg而不是grep来使用ack。 ack as a option ignore-dir =名称,您可以在其中显式忽略文件夹。

+0

grep最近的版本也有`--ignore-dir`,这可能就是你正在寻找的东西。 – Magnus 2013-03-18 16:09:29

+1

为了不打破quickfix窗口会更好`设置grepprg = grep \ -n \ --exclude =标签\ --exclude = cscope.out \ $ * \/dev/null` – 2015-01-26 15:29:53

17

使用选项 'wildignore':

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

,或者如果您想更具体:

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

这应该exlude在nbapp/temp目录下的所有文件在:查找结果。

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其开放搜索框,有乐趣
1

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

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