2010-03-12 17 views
12

Beim Ausführen: make von vim, nachdem make abgeschlossen ist springt es automatisch in eine Datei mit Fehlern. Gibt es eine Möglichkeit, diesevim: make springt automatisch zur ersten Datei mit Fehler

EDIT

Dies wird usecase i Ich möchte erreichen wollen zu vermeiden: machen dann auszuführen Quick zu öffnen, aber die aktuelle Datei, die ich nicht eingeschaltet werden, bin auf sollte die mit Fehlern

mit den Standardeinstellungen nach: Ausführung Quick machen öffnet und die aktuelle Datei ändert sich auch

Antwort

13

Sie können :make! | copen ausführen, die Ihren Cursor in der Quickfix-Liste platzieren sollte, anstatt den aktuellen Puffer zu ändern. Sie können dies noch einfacher machen, indem Sie in Ihrer .vimrc command Mymake make! | copen setzen, also müssen Sie nur :Mymake ausführen, um dies zu tun.

Beachten Sie, dass bei der Auswahl von Fehlern aus der Quickfix-Liste ein Puffer mit der bereits geöffneten Datei durchgeblättert wird, anstatt das aktuelle Fenster zu ändern, und Sie können die Dateien in neuen Fenstern mit <C-w> Enter öffnen.

+0

Ich bin überrascht, dass dies akzeptiert wurde - während natürlich 'copen' definitionsgemäß die Liste der Fehler aktiviert, wenn': make! 'Die geöffnete Datei geändert hat, wird sie sich immer noch geändert haben. – Cascabel

+1

@Jefromi Ich weiß nicht, was du meinst. Ihre eigene Antwort besagt, dass ': make!' Die geöffnete Datei nicht ändert. –

21

Aus der Dokumentation:

 
    7. If [!] is not given the first error is jumped to. 

Also rufen Sie es einfach als :make!.

+0

selbst mit dieser Option sprang es in die Datei. –

+0

Ich habe gerade auf vim 7.1 getestet mit ': make!' Sprang nicht auf den ersten Fehler, ich war immer noch an der gleichen Stelle in der Datei, wo ich es öffne - Fehler in einer anderen Datei – stefanB

+0

Gibt es eine Möglichkeit zu konfigurieren Um das normale Verhalten umzukehren? Also: machen macht was: machen! macht es normalerweise und umgekehrt? Im Idealfall über verschiedene Quickfix-Funktionen wie: grep,: Ack,: Ag. – William

1

Es ist vielleicht nicht die sauberste Lösung, aber das Fehlerformat auf eine leere Zeichenfolge einzustellen sollte den Trick tun, dh.

:set errorformat="" 

Das sollte verhindern, dass die Compiler-Fehlerzeichenfolgen übereinstimmen.

+0

Das gibt mir die Fehlermeldung "E378: 'Fehlerformat' enthält kein Muster". Es scheint jedoch zu funktionieren, es auf etwas zu setzen, das nicht übereinstimmt (ich habe "!" Als Schnelltest verwendet). –

Verwandte Themen