Eseguire il debug di come vim chiama makeprg
Sto cercando di impostare pylint per lavorare con il :makecomando in Vim 8.2.
Ho impostato :compiler pylintma l'esecuzione :makemi dà il messaggio di aiuto di pylint, quindi alcuni argomenti sembrano essere passati in modo errato.
:set makeprg? è
makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no
Ho provato a eseguire questo comando direttamente nel terminale (aggiungendo il nome del file) e ha funzionato: l'output era l'elenco degli errori, non il messaggio di aiuto.
Sfortunatamente, non vedo quale comando esatto vim sta cercando di eseguire. Qualche suggerimento su cosa ho sbagliato o su come eseguirne il debug?
Vorrei attenermi il più possibile alle funzionalità predefinite di vim e non utilizzare alcun plugin per questo.
Risposte
come eseguirne il debug?
È possibile utilizzare il :verbosecomando per aumentare la verbosità di un comando specifico.
In questo caso particolare, è necessario un livello di verbosità superiore a 3 per vedere il comando di shell effettivo eseguito da Vim , quindi dovrebbe funzionare:
: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"
Qualche suggerimento su cosa ho sbagliato?
Come @D. Ben Knoble ha sottolineato, ti manca il nome del file corrente nell'esecuzione del comando. Puoi aggiustarlo passandolo al :makecomando, con :make %, oppure puoi effettivamente incorporarlo %in makeprgse stesso, poiché si espanderà %prima di eseguire il comando:
:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'
Notare il %alla fine della riga di comando. Se incorpori %in makeprg, allora semplicemente in esecuzione :makefunzionerà per eseguire pylint sul tuo file corrente.
(Grazie a @ d-ben-knoble)
makeprg non include il nome del file, quindi
:make %
dovrebbe essere usato per lintare il file corrente