2011-01-02 10 views
2

Ich konvertiere von Textmate zu MacVim und ich habe Probleme damit, Textmates Funktion "In Projekt suchen" zu replizieren. Ich kann gut mit :vimgrep /foo/g **/*.py suchen und das Quickfix-Fenster mit :cope öffnen. Von dort aus kann ich navigieren und das entsprechende Spiel ohne Probleme öffnen.: vimgrep und das Quickfix-Fenster in MacVim

Mein Problem ist, dass, wenn das von mir geöffnete Match nicht das richtige ist, ich keine Möglichkeit finde, das Suchergebnisfenster zurückzubringen, ohne die gesamte Suche erneut auszuführen. Ich kann das Quickfox-Fenster mit :cope wieder öffnen, aber es enthält nur 1 Ergebnis, die Datei, die ich gerade geöffnet habe.

Was ist der allgemeine Workflow für die Suche mehrerer Dateien und die Verwaltung der Ergebnisse?

+1

Meine Präferenz ist in einer separaten Schale grep. – marcog

+2

Das Quickfix-Fenster sollte auch dann benutzbar sein, wenn Sie zu einer der Dateien gesprungen sind. In der Tat konnte ich keinen Weg finden, den Puffer zu löschen, ohne die Suche neu zu starten. – nimrodm

+0

@nimrodm Interessant. Ich benutze tatsächlich den neuesten MacVim, aber ich habe es mit dem Terminal Terminal Vim von Snow Leopard versucht und du hast recht, es funktioniert. In MacVim wird das Quickfix-Listenfenster gelöscht, wenn ich eine Datei öffne. Ich habe die Frage bearbeitet, um zu sagen, dass ich MacVim verwende. –

Antwort

0

Wenn ich mich richtig erinnere, war das Problem, dass ein Vim-Skript/Plugin irgendwie den normalen Betrieb des Quickfix-Fensters störte. Ich habe erkannt, dass es bei Vim-Problemen wie diesem eine gute Übung ist, Vim auf das Wesentliche zu reduzieren und zu überprüfen, ob das Problem weiterhin besteht.

0

Wenn ich es richtig verstehe, möchten Sie nach einer bestimmten Zeichenfolge suchen, die in vielen Dateien in Ihrem Projekt enthalten sein kann, und dann einige Änderungen mit dieser Zeichenfolge vornehmen, dann zum ursprünglichen Fenster zurückkehren und (falls erforderlich) das tun gleicher Prozess wieder?

Wenn das nicht der Fall ist, ignorieren Sie meinen Beitrag sonst cscope verwenden.

  1. die cscope Datenbank beim Aufbau mit: Stammverzeichnis cscope -Rb in Ihrem Projekt. Dies erzeugt cscope.out Datei

  2. offen vim und fügen Sie die cscope-Datenbank:

    : cs

    hinzufügen
  3. die Zeichenfolge wie finden:

    : cs fs

  4. Zum Datei von Ihrem Wunsch aus dem Befehl 3 Ergebnis und die erforderlichen Änderungen vornehmen.

  5. Verwenden Sie erneut Schritt 3, oder drücken Sie ctrl + ^, um zur ursprünglichen Datei zurückzukehren.

+0

Danke Vikram.exe. Das ist aber nicht das, was ich will. Ich möchte nur alle Dateien nach einer Zeichenfolge suchen, eine Liste der Übereinstimmungen abrufen und diese Dateien durch Zurückkehren zur ursprünglichen Ergebnisliste persistieren. –

3

ich in der Regel nicht verwenden vimgrep, verwende ich eine von zwei Plugins: Ack oder grep. Vielleicht haben Sie mehr Glück mit einem dieser beiden.

2

Sie können sich mit :cnext und :cprevious durch die Quickfix-Liste bewegen. Ich finde die Abbildungen von unimpaired sehr nützlich so ]q für :cnext und [q für :cprevious. Wenn Sie nur die Mappings und nicht das ganze unbeeinträchtigte Plugin wollen, fügen Sie folgendes in Ihre .vimrc Datei ein.

nnoremap ]q :cnext<cr> 
nnoremap [q :cprevious<cr> 
+0

Danke, das funktioniert jetzt. Das ursprüngliche Problem war, dass die Liste verschwand, als ich die erste Datei öffnete. –

4

Ich lief in das gleiche Problem mit quickfix und nach Ihrem Kommentar zu filetype plugin indent on wodurch das quickfix Fenster bemerkt sofort zu löschen, verfolgen dies zu einem Plugin: JSLint, die die quickfix Fenster eine Javascript-Datei jedes Mal einstellen wurde geöffnet oder geschrieben. Möglicherweise haben Sie für einen geöffneten Dateityp ein ähnliches Plugin aktiviert.

+0

Ich benutze Syntastic, das verwendet werden kann, um die Standortliste anstelle der Quickfix-Liste zu verwenden: 'let g: syntastic_auto_loc_list = 1' – romainl

0

Was trügerisch ist, ist wahrscheinlich eine Lösung. Ich hatte das gleiche Problem mit quickfix Inhalt verschwinden und es stellt sich heraus, dass es durch die pyflakes.vim linter verursacht wurde. Der Linter versuchte, Quickfix-Einträge für Flusenfehler zu erstellen, aber er löschte nur Quickfix-Inhalte von Suchen.Ich habe eine Option für das Linter-Plugin festgelegt, das die Quickfix-Unterstützung deaktiviert hat und das Problem behoben hat.

0

Die Befehle :colder und :cnewer können verwendet werden, um zu früheren/neueren Quickfix (Fehler) -Listen zu navigieren.

Von der vim-Hilfe:

: kälter

:col[der] [count] Go to older error list. When [count] is given, do 
      this [count] times. When already at the oldest error 
      list, an error message is given. 

: cnewer

:cnew[er] [count] Go to newer error list. When [count] is given, do 
      this [count] times. When already at the newest error 
      list, an error message is given.