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

Raf*_*fid 19 vim search findinfiles


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

set path=~/nbapp/**
set backupdir=~/nbapp/temp
Run Code Online (Sandbox Code Playgroud)

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

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

此致,
拉菲德

hol*_*eek 22

使用'wildignore'选项:

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

或者如果你想更具体:

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

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


ske*_*ept 5

我使用grep命令而不是vimgrep

:help grep
Run Code Online (Sandbox Code Playgroud)

我用的是设置

set grepprg=grep\ -nIh\ --exclude=tags\ --exclude=cscope.out
Run Code Online (Sandbox Code Playgroud)

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

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

  • 为了不打破quickfix窗口,可以更好地设置grepprg = grep\-n\--exclude = tags\--exclude = cscope.out\$*\/ dev/null` (2认同)

its*_*lay 5

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

:set path=**
:set wildignore+=*/node_modules/*
Run Code Online (Sandbox Code Playgroud)

  • 我现在很困惑我当时的意思到底是什么:D (2认同)

Wes*_*ice -1

set path-=~/nbapp/temp
Run Code Online (Sandbox Code Playgroud)

是删除路径条目的首选方法,因为它可以防止 vim 升级可能修改“path”的值。

  • 这似乎不起作用!它仍然显示备份文件。 (2认同)