`: cw` Befehl in Vim: Wie vermeide ich das automatische Springen zum ersten Fehler?

2117
xuhdev

In Vim :cwzeigt der Befehl das Quickfix-Fenster an, wenn Fehler aufgetreten sind, und lassen Sie den Cursor zum ersten erkannten Fehler im Quickfix-Fenster springen (nicht im Puffer, in dem ein Fehler vorliegt). Gibt es einen Befehl, um den gleichen Job auszuführen, aber nicht zum ersten Fehler springen, sondern dort bleiben, wo er war?

1

1 Antwort auf die Frage

2
romainl

Wenn Ihr Problem darin besteht, dass das Quickfix-Fenster den Fokus aus dem Fenster entfernt, in dem Sie gerade arbeiten, ist die Lösung ziemlich einfach. Fügen Sie diese Zeilen zu Ihrem hinzu ~/.vimrc:

augroup quickfix autocmd! autocmd Syntax qf wincmd p augroup END 

Es ist nicht der :cw[indow]Befehl, der den Cursor auf die erste übereinstimmende Zeile im Puffer springt, sondern der Befehl, der die im Quickfix-Fenster angezeigte Liste erstellt hat.

Angenommen, Sie haben:

foo foobar foobarbaz 

und du machst:

:vim foo % 

Ihr Cursor wird automatisch in der ersten übereinstimmenden Zeile positioniert, ohne :cw.

Wenn Sie tun:

:vim foo % | cw 

Ihr Cursor befindet sich weiterhin in der ersten übereinstimmenden Zeile, sodass das Verhalten nicht mit verknüpft ist :cw.

Aber wenn Sie es tun:

:vim /foo/j % | cw 

Der Cursor bleibt stehen. Siehe :help :vimgrep.

Sie sollten in der Dokumentation des von Ihnen verwendeten Befehls nachsehen, ob er ein jFlag mit diesem Flag hat.

Der Befehl `: make` hat ein entsprechendes Flag (`! `), wenn ich jedoch`: make! | cw`, es springt immer noch automatisch. Kannst du das erklären? xuhdev vor 10 Jahren 0
OK, ich glaube, wir haben hier ein Missverständnis. Der Befehl `: cw` lässt den Cursor automatisch zur ersten Fehlerzeile des Quickfix-Fensters springen, NICHT im Puffer. xuhdev vor 10 Jahren 0
Was wäre dann dein gewünschtes Verhalten? Gehen Sie zur letzten Zeile in der Liste? Gehen Sie zu der Zeile in der Liste, die der aktuellen Zeile im Puffer am nächsten liegt. Zu einer beliebigen Zeile gehen? Eine zufällige Zeile? Halten Sie es nicht für logisch, Fehler mit… der ersten zu beheben? romainl vor 10 Jahren 0
Mein gewünschtes Verhalten ist das Erstellen dieses neuen Quickfix-Fensters, der Cursor bleibt jedoch dort, wo er ist. xuhdev vor 10 Jahren 0
Ihr Problem ist also, dass das Quickix-Fenster auf ": cw" fokussiert ist, aber Sie möchten, dass der Fokus auf dem aktuellen Fenster bleibt. Ist das richtig? romainl vor 10 Jahren 0
Bitte sehen Sie meine Bearbeitung. romainl vor 10 Jahren 0