2014-01-05 5 views
64

Die folgende ist aus der Dokumentation über die Quickfix-Liste und Standortliste. Aber ich bin mir nicht sicher, was eigentlich anders ist. Das Bild unten zeigt die gleichen Dinge aus der Standortliste und Quickfix-Liste. Wann verwende ich den einen oder anderen in vimgrep und lvimgrep?Was ist der Unterschied zwischen Standortliste und Quickfix-Liste in Vim

In Vim the quickfix commands are used more generally to find a list of positions 
in files.For example, |:vimgrep| finds pattern matches. You can use the positions 
in a script with the |getqflist()| function. Thus you can do a lot more than the 
edit/compile/fix cycle! 
... 
... 

         *location-list* *E776* 
A location list is similar to a quickfix list and contains a list of positions 
in files. A location list is associated with a window and each window can have 
a separate location list. A location list can be associated with only one window. 
The location list is independent of the quickfix list. 

... 

enter image description here

UPDATE

fand ich die folgende from here.

Also der Unterschied ist alle Fenster für Quickfix-Liste und lokales Fenster für Standortliste. Ich kann jedoch die Standortliste von anderen Fenstern aus öffnen. Also was ist der Unterschied dann ??

Antwort

72

Die Standortliste ist lokal für das aktuelle Fenster, so dass Sie so viele Standortlisten wie Fenster haben können: 30 Fenster? Kein Problem, hier sind Ihre 30 gleichzeitigen Standortlisten.

Die Quickfix-Liste ist global, sodass nicht mehr als eine gleichzeitig verfügbar sein kann. Es gibt Befehle, mit denen Sie die aktuelle Quickfix-Liste durch eine vorherige ersetzen können, aber Sie können nicht zwei gleichzeitige Quickfix-Listen haben.

Verwechseln Sie die Location/Quickfix "lists" (die Datenstrukturen) nicht mit den location/quickfix "windows" (die Fenster zeigen den Inhalt dieser Datenstrukturen an). Die "Fenster" haben ähnliche Verhaltensweisen, aber die "Listen" nicht. Der Unterschied ist wichtig, weil diese Fenster glücklicherweise nicht die einzigen Möglichkeiten sind, mit diesen Listen zu interagieren: Es gibt viele Befehle, die es uns ermöglichen, durch diese Listen zu gehen, ohne die zugehörigen Fenster zu öffnen und den Unterschied zwischen diesen Listen zu kennen Befehle effizient.

Hands-on dargestellt Beispiel:

$ vim -O foo.txt bar.txt

  1. :lvim foo % in foo.txt Führen Sie eine Standortliste für das Fenster erstellen foo.txt enthält.

  2. Do :lne ein paar Mal zu ein paar foo in foo.txt springen.

  3. Fokus auf bar.txt und tun :lne. Was geschieht?

  4. Jetzt :lvim bar % in bar.txt erstellen, um eine Standortliste für das Fenster zu erstellen, das bar.txt enthält.

  5. Do :lne ein paar Mal. Zu welchen Spielen springen Sie? In welchem ​​Puffer? In welchem ​​Fenster?

  6. Wechseln Sie in das andere Fenster und tun Sie ein paar Mal :lne. Was geschieht?

  7. Wechseln Sie erneut zu bar.txt. Was macht :lne?

  8. Erstellen Sie jetzt in :vim bar % in bar.txt eine Quickfix-Liste.

  9. Do :cn ein paar Mal, um zu ein paar bar in bar.txt zu springen.

  10. Konzentrieren Sie sich nun auf foo.txt, was macht :cn?

Die Lage Sie springen mit :lne hängt von dem Fenster, das Sie in sind, aber der Fehler Sie springen mit :cn ist immer das gleiche (bis Sie die aktuelle quickfix Liste durch eine andere ersetzen).

Beide Listen haben relativ klare Rollen IMO: Die Quickfix-Liste (und damit das Quickfix-Fenster) ist normalerweise und ganz logisch für Fehler und die Standortliste scheint (für mich) für die Suche geeignet.

+6

Allgemeiner: Die quickfix Liste ist am besten, wenn Sie Ihre Suche oder kompilieren mehrere Dateien beinhaltet, wenn die Standortliste am besten nur eine einzige Datei beteiligt ist. –

+1

Insbesondere, wenn Sie starten vim mit '-q errors.txt', nach Fehlern in' errors.txt' (dh 'gcc -Wall * .c> errors.txt 2> & 1 ') kompilieren setzen, wird vim bevölkern die quickfix-Liste aus der Liste der Kompilierfehler, was sehr praktisch ist. – Kevin

+0

Yahoo! Tolle Erklärung! –

Verwandte Themen