2010-10-01 14 views
18

no quiero instalar otro plugin, como pylint.vim,cómo utilizar pylint en vim

Y hoy, decido usar vim editar pitón en lugar de pydev que es un plugin de eclipse. Pero tengo problemas.

tengo añadir esto en mi vimrc

autocmd BufWritePost *.py !pylint <afile> 

pero pylint no contiene el nombre de archivo de salida

************* Module mymodule 
E: 22: invalid syntax 

shell return 2 

por lo que no puede saltar a la línea 22, así que usar sed 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 carcasa retorno 2 por vim. por lo que todavía no puede saltar a esa línea. vim lo consideran como compilar correctamente

========================= nuevo comentario =========== Call a function in Vim’s `autocmd` command

creo que tal vez debería usar maquillaje de comando y establecer makeprg, por lo que utilizan a continuación config

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

al guardar, vuelve vim:

************* 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 

Respuesta

25

¿por qué tan complicado con sed que solo funciona correctamente en Linux? Intente lo siguiente:

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

gracias. Justo lo que quiero. pero, ¿cuál es el significado de%: p. y el errorformat es una variable vim, ¿cómo podría afectar a pylint? –

+1

'%: p' significa utilizar la ruta completa del archivo – idbrii

+4

Gran respuesta. Pero --output-format es ahora una opción obsoleta en pylint 1.0.0. La alternativa es usar 'set makeprg = pylint \ --reports = n \ --msg-template = \" {path}: {line}: \ {msg_id} \ {symbol}, \ {obj} \ {msg} \ "\%: p' – JohnTESlade

3

al fin resuelvo yo mismo. Me gustaría compartirlo con ustedes. 2 líneas en vimrc.

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

Tengo el uso de la respuesta de jceb –

+0

Gracias, puedo usarlo y estoy buscando un tiempo más largo. Pero creo que debería actualizarse. ¿Podemos dividir la pantalla si pylint informa cualquier error? en este momento si es un gran error y perder esta información – user765443

+0

puedo usarlo pero me gustaría dividir el error si recibo algún error – user765443

0

puede intentar ejecutar epylint en lugar de simplemente pylint.

epylint (enviado con pylint) es el que se utiliza en emacs (con flymake). Tiene algunos cambios, especialmente en lo que respecta al manejo de rutas, consulte la docstring al inicio de pylint/epylint.py para obtener más información. También puede ayudarte en vim.

Sidenote: No soy un usuario de vim para programarme, pero pylint.vim todavía parece ser una opción decente. Pero no cuestionaré tus requisitos previos.

0

autocmd pitón FileType vamos & makeprg = '/ usr/local/bin/pylint%'

autocmd BufWritePost * .py hacer

autocmd pitón FileType dejó & makeprg = '/ usr/local/bin/pyflakes% '

autocmd BufWritePost *.py make