Ich habe begonnen, syntastische Plugins mit vim zu verwenden, um Fehler in meinem javascript
Code zu melden .
I integriert auch eslint mit syntastic , und es zeigt mir schön Fehler, Warnungen , falls sie gemäß Regeln in meiner schriftlichen vorhanden sind .eslintrc Datei.
Kann ich einige häufig auftretende Fehler, z. B. fehlendes Semikolon, fehlendes Leerzeichen usw., auf irgendeine Weise mit einem Tastendruck beheben?
Bearbeiten:
Ich habe festgestellt, dass eslint eine Option hat
--fix Automatically fix problems
die für solche Fälle verwendet werden können. Ich muss diesen Befehl ausführen, damit eslint diese Probleme behebt
eslint --fix -c myconfig file.js
Ich möchte wissen, wie das mit vim integriert werden kann ?
map <C-j> call Function()<CR>
Dies wäre jedoch eine sehr maßgeschneiderte Funktion, die Sie schreiben müssten, um Ihren Anforderungen zu entsprechen. Und Romainl meint, wenn man etwas falsch macht, kann das leicht mehr schaden als nützen. Vorsicht ist geboteneslint --fix
. Ich möchte diesen vielmehr auf Editorebene haben.Antworten:
Beachten Sie, wie in den Kommentaren erwähnt, die Konsequenzen, die diese Änderung für Ihre Arbeitsumgebung hat (wissen Sie genau, welche Eslint-Regeln Sie verwenden, um Dinge zu "reparieren").
Um Ihre Frage zu beantworten: Das Hinzufügen der Option zur ESLINT-Ausführung mit Syntax ist einfach . Fügen Sie dies einfach zu Ihrem hinzu
.vimrc
:Da eslint für die Datei ausgeführt wird, nachdem vim seinen Puffer in die Datei geschrieben hat, weiß vim nichts über die von eslint vorgenommenen Korrekturen. Also muss vim die Datei irgendwie neu laden (der manuelle Weg wäre, einfach
:e
im normalen / Befehlsmodus zu tippen ). Um das zu tun, können wir die Verwendung Autoread - Option zusammen mit checktime :Um checktime aufzurufen, können wir ein autocmd verwenden, das jedes Mal ausgeführt wird, wenn ein Puffer in eine Datei geschrieben wird. Da syntactic jedoch für dasselbe Ereignis eine eigene autocmd verwendet, müssen
BufWritePost
wir unsere autocmd hinzufügen, nachdem syntactic eine eigene hinzufügt. Ich habe festgestellt, dass dies der Fall ist, als wir unser AutocMD hinzufügenVimEnter
:Nach dem Hinzufügen aller drei Teile
.vimrc
sollte sich Ihr Vim wie erwartet verhalten (fusseln und beim Speichern der Datei automatisch korrigieren:w
).quelle
Die Lösung in Jepz 'Antwort hat bei mir nicht ganz funktioniert.
eslint
wurde mit der--fix
Option korrekt aufgerufen . Vielleicht liegt es jedoch an Interna, die sich geändert haben, aber anscheinendchecktime
wurde es vor dem Ende von aufgerufeneslint --fix
, sodass das Neuladen der Datei nicht richtig funktionierte undfile has changed, are you sure you want to write to it?
beim nächsten Speichern einen Fehler auslöste .Indem ich mich jedoch mit Problemen befasste, entdeckte ich einen versteckten Hook namens
SyntasticCheckHook
( source ), der nach Abschluss der Syntastic-Prüfungen ausgelöst zu werden scheint .Mit diesem können Sie einfach aufrufen,
checktime
nachdem die Syntastic Checks ausgeführt wurden.Hier ist mein endgültiger Code:
Edit: Ich persönlich habe zum
ALE
Flusen gewechselt , was das Autofixing von Haus aus unterstützt.quelle