2010-11-28 4 views
15


In meiner .vimrc Datei, ich habe zwei sehr nützliche Linien:Vim: Ignorieren Sonderweg in Search

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

Die erste Zeile ermöglicht es mir, in meinem Projektverzeichnis und Unterverzeichnisse zu suchen. Die zweite Zeile veranlasst vim, Backup-Dateien in einem speziellen temporären Ordner zu erstellen, anstatt mich zu stören, indem ich Dutzende von Backup-Dateien mit genau demselben Namen außer einem '~' am Ende hinzufüge. Da sich die temporären Dateien jedoch immer noch im Ordner 'nbapp' befinden (und ich sie dort behalten möchte, weil sie mit dem Projekt zu tun haben), werden sie auch bei einer Suche durchsucht, was mich manchmal stört , weil ich die Suchergebnisse durchsuche und feststelle, dass sie sich tatsächlich im temporären Ordner befinden.

Gibt es eine Möglichkeit, Pfade von der Suche auszuschließen (d. H. Vimgrep)? Ich möchte den Ordner 'temp' ausschließen.

Grüße,
Rafid

Antwort

-1
set path-=~/nbapp/temp 

ist die bevorzugte Methode der Pfadeinträge zu entfernen, wie es Ihnen gegen vim Upgrades bewacht, die den Wert von ‚Pfad‘ ändern kann.

+2

Das scheint nicht zu funktionieren! Es zeigt mir immer noch die Backup-Dateien. – Rafid

4

Statt vimgrep verwende ich den Befehl grep

:help grep 

Ich benutze die Einstellung

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

, wenn ich will Dateien suchen, aber die Tag-Dateien und cscope Dateien ohne. Sie könnten das oben beschriebene ändern, um keine Dateien zu suchen, die mit einem ~ enden. Ich glaube nicht, dass Sie den Ordner mit grep ausschließen können (oder vielleicht können Sie, versuchen Sie --exclude = ~/nbapp/temp/* es könnte funktionieren Ich habe es nicht getestet).

Wenn das nicht funktioniert, empfehle ich mit ack für die grepprg statt grep. ack als Option ignore-dir = Name, in dem Sie einen Ordner explizit ignorieren können.

+0

Neue Versionen von grep haben auch '--ignore-dir ', was genau das ist, wonach Sie suchen. – Magnus

+1

Um Quickfix-Fenster besser nicht zu brechen, wäre 'set grepprg = grep \ -n \ --exclude = Tags \ --exclude = cscope.out \ $ * \/dev/null' –

17

Verwenden Sie die 'wildignore' Option:

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

oder wenn Sie genauer sein möchten:

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

Diese alle Dateien im nbapp/temp-Verzeichnis exlude sollte in: Ergebnis finden

+3

Dies funktioniert nicht! – Rafid

+0

Ich suchte genau nach diesem, um Build-Ordner in zu ignorieren: Suche finden. Vielen Dank! –

+0

Wildignore scheint nicht für vimgrep funktioniert –

0

Zum Beispiel in Ubuntu nur

sudo apt-get install ack-grep 

sudo ln -s /usr/bin/ack-grep /usr/bin/ack 

dann installieren http://www.vim.org/scripts/script.php?script_id=2572

und jetzt nächste Zeile addieren.vimrc

noremap <C-f> :copen<CR>:Ack --ignore-dir #first_ignore_dir# --ignore-dir #second_ignore_dir# -ai 
  • seine offene Suchrahmen von Strg + F, Spaß haben
1

Um einige Verzeichnisse von :find ausschließen und gf (zB node_modules) Sie können einstellen:

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