Pregunta:
Comencé a usar el complemento syntastic con vim para informar errores de pelusa en mi código javascript
.
También integré eslint con syntastic , y me muestra errores agradables, advertencias en caso de que estén presentes según las reglas escritas en mi archivo .eslintrc .
¿Hay alguna forma en la que pueda corregir algunos errores comunes, por ejemplo, falta de punto y coma, falta de espacio, etc. con una pulsación de tecla?
Editar:
He descubierto que eslint tiene una opción
--fix Automatically fix problems
que se puede utilizar para tales casos. Necesito ejecutar este comando para permitir que eslint solucione esos problemas
eslint --fix -c myconfig file.js
Quiero saber cómo se puede integrar eso con vim .
Respuesta:
Como se menciona en los comentarios, tenga en cuenta las consecuencias que esta modificación tiene para su entorno de trabajo (sepa exactamente qué reglas de eslint utiliza para "arreglar" las cosas).
Para responder a su pregunta: agregar la opción a la ejecución de eslint con sintáctica es sencillo . Simplemente agregue esto a su .vimrc
:
" execute eslint with --fix flag
let g:syntastic_javascript_eslint_args = ['--fix']
Pero como eslint se ejecuta en el archivo después de que vim escribe su búfer en el archivo, vim no conoce las correcciones que hace eslint. Entonces, de alguna manera, vim tiene que cargar el archivo nuevamente (la forma manual sería simplemente escribir :e
en modo normal / comando). Para hacer eso, podemos usar la opción de lectura automática junto con checktime :
" enable autoread to reload any files from files when checktime is called and
" the file is changed
set autoread
Para llamar a checktime podemos usar un autocmd que se ejecuta cada vez que se escribe un búfer en un archivo. Pero como sintáctico está usando su propio autocmd en el mismo evento BufWritePost
, tenemos que agregar nuestro autocmd después de que syntactic agregue el suyo. Descubrí que este es el caso cuando agregamos nuestro autocmd en VimEnter
:
" add an autocmd after vim started to execute checktime for *.js files on write
au VimEnter *.js au BufWritePost *.js checktime
Entonces, después de agregar las tres partes a su .vimrc
vim debería comportarse como se esperaba (lint y autocorrección en el archivo guardado :w
).