Depurar cómo vim llama a makeprg
Estoy tratando de configurar pylint para que funcione con el :makecomando en Vim 8.2.
Lo configuré, :compiler pylintpero la ejecución :makeme da el mensaje de ayuda de pylint, por lo que algunos argumentos parecen pasarse incorrectamente.
:set makeprg? es
makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no
Intenté ejecutar este comando directamente en la terminal (agregando el nombre del archivo) y funcionó: el resultado fue la lista de errores, no el mensaje de ayuda.
Desafortunadamente, no veo qué comando exacto está tratando de ejecutar vim. ¿Alguna pista sobre lo que hice mal o cómo depurarlo?
Me gustaría ceñirme a la funcionalidad predeterminada de vim tanto como sea posible y no usar ningún complemento para esto.
Respuestas
¿cómo depurarlo?
Puede utilizar el :verbosecomando para aumentar la verbosidad de un comando específico.
En este caso particular, necesita un nivel de verbosidad superior a 3 para ver el comando de shell real ejecutado por Vim , por lo que esto debería funcionar:
: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"
¿Alguna pista sobre lo que hice mal?
Como @D. Ben Knoble señaló que falta el nombre del archivo actual en la ejecución del comando. Puede solucionarlo pasándolo al :makecomando, con :make %, o puede incorporarlo %en makeprgsí mismo, ya que se expandirá %antes de ejecutar el comando:
:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'
Tenga %en cuenta el al final de la línea de comandos. Si se incorpora %a makeprg, entonces simplemente ejecutar :makefuncionará para ejecutar pylint en su archivo actual.
(Gracias a @ d-ben-knoble)
makeprg no incluye el nombre del archivo, por lo que
:make %
debe usarse para pelar el archivo actual