Debuggen Sie, wie vim makeprg aufruft
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
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.
(Danke an @ d-ben-knoble)
makeprg enthält keinen Dateinamen, also
:make %
sollte verwendet werden, um die aktuelle Datei zu fusseln