Ich habe eine Funktion in Vim gemacht, die mir ein paar Sachen kompiliert. Es sieht so aus:
%Vor%Normalerweise öffne ich vim in einem Projektverzeichnis, dann kann ich diese Funktion ausführen, welche CD's in Build, Builds und CD's zurück gebaut werden, damit ich in meinem Projektverzeichnis bleibe.
Wenn der Build jedoch fehlschlägt und das Quickfix-Fenster angezeigt wird, zeigt es manchmal Dateinamen relativ zu meinem Projektverzeichnis (yay) an, aber manchmal zeigt es in derselben Datei den absoluten Pfad an. Die Ausgabe aus dem Build-Skript zeigt immer relative Pfade an, und vim behandelt beide korrekt, d. H. Es findet die korrekte Datei.
Ich vermute, dass die Pfadbehandlung verantwortlich ist. Meine Frage ist, was ist das Problem, und gibt es eine bessere Möglichkeit, in das Build-Verzeichnis und zurück zu wechseln? Ich möchte immer relative Pfade angezeigt.
Danke !!
Ich denke, das hat mit lcd
zu tun. Wenn das Quickfix-Fenster von Ihrer Funktion aus geöffnet wird, übernimmt es das lokale Verzeichnis aus dem aktuellen Fenster. Aber wenn das Quickfix-Fenster von irgendwo anders (oder vor dem Ausführen der Funktion) geöffnet wurde, behält es das globale Arbeitsverzeichnis bei. Wenn es eine Abweichung gibt, muss Vim absolute Pfade anzeigen.
Wenn Sie :lcd
wirklich verwenden müssen, wäre es besser, eine Standortliste ( :lmake
) zu verwenden, da diese auch lokal für das Fenster ist. Aber ich würde zuerst versuchen, ein globales :cd
zu verwenden, da der Schalter sowieso nur temporär ist und es dir nicht wichtig ist, den tatsächlichen ursprünglichen Wert so weit wiederherzustellen.
Wie Ingo schon sagte, sind die Pfade relativ zum aktuellen Verzeichnis des Quickfix-Fensters, das vom vorherigen Fenster übernommen wurde.
Sie können autocmd QuickFixCmdPre
verwenden, um vor dem Ausführen des make den richtigen Pfad festzulegen.
Wenn Sie das Project Root-Plugin verwenden, fügen Sie Ihrem .vimrc
Folgendes hinzu:
, dann wird der Pfad des Quickfix-Fensters korrigiert, bevor er von :make
gefüllt wird (Sie können auch eine Reihe anderer Befehle angeben, die Quickfix-Fenster verwenden: grep,lgrep,cscope
).
Tags und Links vim