Zacząłem używać syntastic wtyczki z vim do błędów szarpie raport w moim javascript
kodzie.
Zintegrowałem również eslint z syntastic , i pokazuje mi ładne błędy, ostrzeżenia na wypadek, gdyby były obecne zgodnie z regułami zapisanymi w moim pliku .eslintrc .
Czy jest jakiś sposób, w jaki mogę naprawić niektóre typowe błędy, np. Brak średnika, brak miejsca itp. Za pomocą naciśnięcia klawisza?
Edytować:
Odkryłem, że eslint ma opcję
--fix Automatically fix problems
które mogą być wykorzystane w takich przypadkach. Muszę uruchomić to polecenie, aby eslint mógł rozwiązać te problemy
eslint --fix -c myconfig file.js
Chcę wiedzieć, jak można to zintegrować z vimem ?
map <C-j> call Function()<CR>
Ale byłaby to bardzo niestandardowa funkcja, którą musisz napisać, aby dopasować ją do swoich potrzeb. Romainl ma na myśli to, że jeśli zrobisz coś złego, możesz łatwo wyrządzić więcej szkody niż pożytku. Zaleca się ostrożnośćeslint --fix
, wolałbym mieć to na poziomie edytora.Odpowiedzi:
Jak wspomniano w komentarzach, należy pamiętać o konsekwencjach, jakie ta modyfikacja ma dla środowiska pracy (dokładnie wiedzieć, jakich zasad eslint używa się do „naprawy” rzeczy).
Aby odpowiedzieć na twoje pytanie: dodanie opcji do wykonania eslint za pomocą syntactic jest proste . Po prostu dodaj to do
.vimrc
:Ale ponieważ eslint jest wykonywany na pliku po tym, jak vim zapisze w nim swój bufor, vim nie wie o poprawkach, które robi eslint. Więc w jakiś sposób vim musi ponownie załadować plik (ręcznym sposobem byłoby po prostu wpisanie
:e
w trybie normalnym / poleceń). Aby to zrobić, możemy użyć opcji autoreadowania razem z Checktime :Zadzwonić checktime możemy użyć autocmd który zostanie wykonany za każdym razem, gdy bufor jest zapisywane w pliku. Ale ponieważ syntactic używa własnego autocmd na tym samym zdarzeniu,
BufWritePost
musimy dodać nasz autocmd po tym, jak syntactic doda własne. Odkryłem, że dzieje się tak, gdy dodajemy nasz autocmd doVimEnter
:Tak więc po dodaniu wszystkich trzech części do twojego
.vimrc
vima powinno zachowywać się zgodnie z oczekiwaniami (kłaczki i autokorekta przy zapisywaniu pliku:w
).źródło
Rozwiązanie podane w odpowiedzi Jepza nie działało dla mnie całkowicie.
eslint
został poprawnie wywołany z--fix
opcją. Być może jest to spowodowane zmianami wewnętrznymi, ale wygląda na to, żechecktime
został wywołany przed końcemeslint --fix
, więc przeładowanie pliku nie działało poprawnie, powodując uruchomieniefile has changed, are you sure you want to write to it?
następnego zapisu.Jednak zagłębiając się w problemy, odkryłem ukryty hak, który wydaje się uruchamiać po zakończeniu kontroli syntastycznych, o nazwie
SyntasticCheckHook
( źródło ).Dzięki temu możesz po prostu zadzwonić
checktime
po uruchomieniu kontroli Syntastic.Oto mój końcowy kod:
Edycja: Osobiście przełączyłem się
ALE
na zbieranie włókien, które natywnie obsługują autofiksowanie.źródło