J'ai commencé à utiliser un plugin syntaxique avec vim pour signaler les erreurs de charpie dans mon javascript
code.
J'ai également intégré eslint à la syntaxe , et cela me montre de belles erreurs, des avertissements au cas où ils seraient présents selon les règles écrites dans mon fichier .eslintrc .
Existe-t-il un moyen de corriger certaines erreurs courantes, par exemple un point-virgule manquant, un espace manquant, etc. avec un coup de clé?
Éditer:
J'ai trouvé qu'eslint a une option
--fix Automatically fix problems
qui peut être utilisé pour de tels cas. Je dois exécuter cette commande pour laisser eslint résoudre ces problèmes
eslint --fix -c myconfig file.js
Je veux savoir comment cela peut être intégré à vim ?
map <C-j> call Function()<CR>
Mais ce serait une fonction personnalisée très personnalisée que vous auriez besoin d'écrire pour répondre à vos besoins. Et le point de Romainl est que si vous faites quelque chose de mal, vous pouvez facilement finir par faire plus de mal que de bien. La prudence est recommandéeeslint --fix
, je préfère de beaucoup avoir cela au niveau de l'éditeur.Réponses:
Comme mentionné dans les commentaires, soyez conscient des conséquences de cette modification sur votre environnement de travail (sachez exactement quelles règles eslint vous utilisez pour "réparer" les choses).
Pour répondre à votre question: l'ajout de l'option à l'exécution eslint avec syntaxique est simple . Ajoutez simplement ceci à votre
.vimrc
:Mais comme eslint est exécuté sur le fichier après que vim ait écrit son tampon dans le fichier, vim ne connaît pas les correctifs qu'eslint fait. Donc, en quelque sorte, vim doit charger à nouveau le fichier (la manière manuelle serait de simplement taper
:e
en mode normal / commande). Pour ce faire, nous pouvons utiliser la autoread option conjointement avec checktime :Pour appeler checktime, nous pouvons utiliser un autocmd qui est exécuté à chaque fois qu'un tampon est écrit dans un fichier. Mais comme la syntaxe utilise son propre autocmd sur le même événement,
BufWritePost
nous devons ajouter notre autocmd après que la syntaxe ait ajouté le sien. J'ai trouvé que c'est le cas lorsque nous ajoutons notre autocmd surVimEnter
:Donc, après avoir ajouté les trois parties à votre
.vimrc
vim, vous devez vous comporter comme prévu (peluches et correction automatique lors de l'enregistrement du fichier:w
).la source
La solution donnée dans la réponse de Jepz n'a pas complètement fonctionné pour moi.
eslint
a été correctement appelé avec l'--fix
option. Cependant, c'est peut-être à cause des internes qui ont changé, mais il semble avoirchecktime
été appelé avant la fin deeslint --fix
, donc le rechargement du fichier n'a pas fonctionné correctement, déclenchant unfile has changed, are you sure you want to write to it?
lors de la prochaine sauvegarde.Cependant, en creusant dans les problèmes, j'ai découvert un hook caché qui semble se déclencher après la fin des vérifications Syntastic, appelé
SyntasticCheckHook
( source ).Avec cela, vous pouvez simplement appeler
checktime
après l'exécution des vérifications Syntastic.Voici mon code final:
Edit: j'ai personnellement opté
ALE
pour le linting, qui prend en charge la correction automatique en natif.la source