Debuggen Sie, wie vim makeprg aufruft

Aug 26 2020

Ich versuche, pylint so einzurichten, dass es mit dem :makeBefehl in Vim 8.2 funktioniert .

Ich habe festgelegt, :compiler pylintaber das Ausführen :makegibt mir die Hilfemeldung von pylint, sodass einige Argumente falsch übergeben zu werden scheinen.

:set makeprg? ist

makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no

Ich habe versucht, diesen Befehl direkt im Terminal auszuführen (den Dateinamen anhängen) und es hat funktioniert - Ausgabe war die Liste der Fehler, keine Hilfemeldung.

Leider sehe ich nicht, welchen genauen Befehl vim ausführen möchte. Irgendwelche Hinweise, was ich falsch gemacht habe oder wie ich es debuggen kann?

Ich möchte mich so weit wie möglich an die Standardfunktionalität von vim halten und keine Plugins dafür verwenden.

Antworten

3 filbranden Aug 26 2020 at 04:01

wie man es debuggt?

Mit dem :verboseBefehl können Sie die Ausführlichkeit eines bestimmten Befehls erhöhen.

In diesem speziellen Fall benötigen Sie eine Ausführlichkeitsstufe über 3, um den tatsächlichen Shell-Befehl zu sehen, der von Vim ausgeführt wird. Dies sollte also funktionieren:

:4verbose make
Calling shell to execute: "pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no  2>&1| tee /tmp/abcde12/3"

Irgendwelche Hinweise, was ich falsch gemacht habe?

Als @D. Ben Knoble wies darauf hin, dass Ihnen bei der Ausführung des Befehls der Name der aktuellen Datei fehlt. Sie können es entweder beheben, indem Sie es mit an den :makeBefehl übergeben, :make %oder Sie können das tatsächlich %in sich makeprgselbst integrieren, da es %vor dem Ausführen des Befehls erweitert wird:

:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'

Beachten Sie das %am Ende der Befehlszeile. Wenn Sie %in integrieren makeprg, :makefunktioniert das einfache Ausführen , um pylint für Ihre aktuelle Datei auszuführen.

2 xaxa Aug 26 2020 at 03:37

(Danke an @ d-ben-knoble)

makeprg enthält keinen Dateinamen, also

:make %

sollte verwendet werden, um die aktuelle Datei zu fusseln