Comencé a usar el complemento fantástico con vim para informar errores de pelusa en mi javascript
código.
También integramos 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 de 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 puede usarse 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 ?
map <C-j> call Function()<CR>
Pero esta sería una función personalizada muy personalizada que necesitaría escribir para satisfacer sus necesidades. Y el punto de romainl es que si haces algo mal, puedes terminar fácilmente haciendo más daño que bien. Se recomienda precaucióneslint --fix
, prefiero tener esto a nivel de editor.Respuestas:
Como se mencionó en los comentarios, tenga en cuenta las consecuencias que esta modificación tiene para su entorno de trabajo (sepa exactamente qué reglas de seguridad usa para "arreglar" las cosas).
Para responder a su pregunta: agregar la opción a la ejecución de eslint con sintáctico es sencillo . Simplemente agregue esto a su
.vimrc
:Pero como eslint se ejecuta en el archivo después de que vim escribe su búfer en el archivo, vim no conoce las soluciones que eslint hace. 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 :Para llamar a checktime podemos usar un autocmd que se ejecuta cada vez que se escribe un búfer en un archivo. Pero como Syntactic está utilizando 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 enVimEnter
:Entonces, después de agregar las tres partes a su
.vimrc
vim, debe comportarse como se espera (pelusa y autocorrección al guardar el archivo:w
).fuente
La solución dada en la respuesta de Jepz no funcionó completamente para mí.
eslint
fue llamado correctamente con la--fix
opción Sin embargo, tal vez se deba a que las partes internas han cambiado, pero parece quechecktime
se llamó antes del finaleslint --fix
, por lo que la recarga del archivo no funcionó correctamente, lo que provocó unfile has changed, are you sure you want to write to it?
en el siguiente guardado.Sin embargo, al investigar los problemas, descubrí un gancho oculto que parece activarse después de que se hayan completado las comprobaciones de Syntastic, llamado
SyntasticCheckHook
( fuente ).Con esto, simplemente puede llamar
checktime
después de que se hayan ejecutado las comprobaciones de Syntastic.Aquí está mi código final:
Editar: Personalmente
ALE
cambié a linting, que admite autofixing de forma nativa.fuente