vscode tutorial how commands linux vim sed pylint

linux - tutorial - vim editor commands



¿Cómo usar pylint en vim? (6)

No quiero instalar otro complemento, como pylint.vim,

Y hoy, decido usar vim edit python en lugar de pydev, que es un complemento de eclipse. Pero tengo problemas.

He añadido esto en mi vimrc

autocmd BufWritePost *.py !pylint <afile>

pero pylint no contiene nombre de archivo en la salida

************* Module mymodule E: 22: invalid syntax shell return 2

así que no puede saltar a la línea 22, así que uso sed para cambiar la salida

autocmd BufWritePost *.py !pylint <afile> | sed ''s/^/(/w*/):/s*/([0-9]/+/)/<afile>:/2: /1: /g''

vuelve:

mymodule.py:22: E: : invalid syntax

pero sin shell vuelve 2 por vim. por lo que todavía no puede saltar a esa línea. Vim lo considera como compilar exitosamente

========================= nuevo comentario =========== Llamar a una función en el comando `autocmd` de Vim

Creo que tal vez debería usar make command y set makeprg, así que uso la siguiente configuración

autocmd FileType python let &makeprg=''pylint <afile> | sed s/^/(/w*/):/s*/([0-9]/+/)/<afile>:/2: /1: /g'' autocmd BufWritePost *.py make

Cuando guardo, vim devuelve:

************* Module count E: 3: invalid syntax (1 of 2): ************* Module count Error detected while processing BufWritePost Auto commands for "*.py": E492: Not an editor command: sed s/^/(/w*/):/s*/([0-9]/+/)/<afile>:/2: /1: /g


¿Por qué tan complicado con sed que simplemente funciona correctamente en Linux? Intenta lo siguiente:

set makeprg=pylint/ --reports=n/ --output-format=parseable/ %:p set errorformat=%f:%l:/ %m


Recomendaría utilizar ALE (Asynchronous Lint Engine) https://github.com/w0rp/ale

Admite una amplia gama de linters y formateadores de python, incluido el pylint . Gran cosa sobre ALE que soporta muchos otros idiomas.


autocmd FileType python let & makeprg = ''/ usr / local / bin / pylint%''

autocmd BufWritePost * .py make

autocmd FileType python let & makeprg = ''/ usr / local / bin / pyflakes%''

autocmd BufWritePost * .py make


por fin lo resuelvo yo mismo. Me gustaría compartir con ustedes chicos. 2 lineas en vimrc.

autocmd FileType python let &makeprg=''pylint %/|sed "s/^/(/w*/):/s*/([0-9]/+/)/%:/2:/ /1:/ /g"'' autocmd BufWritePost *.py make


puede intentar ejecutar epylint en lugar de solo pylint.

epylint (enviado con pylint) es el que se usa dentro de emacs (con flymake). Tiene algunos cambios, especialmente en relación con el manejo de la ruta, consulte la cadena de documentación al comienzo de pylint / epylint.py para obtener más información. Te puede ayudar en vim también.

Nota al margen: no soy un usuario vim para la programación, pero pylint.vim todavía parece ser una opción decente. Pero no cuestionaré tus requisitos previos.