Saya mulai menggunakan plugin sintaksis dengan vim untuk melaporkan kesalahan serat dalam javascript
kode saya .
Saya juga mengintegrasikan eslint dengan syntastic , dan itu menunjukkan kepada saya kesalahan yang bagus, peringatan jika mereka hadir sesuai aturan yang ditulis dalam file .eslintrc saya .
Apakah ada cara di mana saya dapat memperbaiki beberapa kesalahan umum misalnya hilang semi-colon, missing space dll dengan key-stroke?
Edit:
Saya telah menemukan bahwa eslint memiliki opsi
--fix Automatically fix problems
yang dapat digunakan untuk kasus-kasus seperti itu. Saya perlu menjalankan perintah ini untuk membiarkan eslint memperbaiki masalah itu
eslint --fix -c myconfig file.js
Saya ingin tahu bagaimana itu dapat diintegrasikan dengan vim ?
map <C-j> call Function()<CR>
Tapi ini akan menjadi fungsi yang dirancang khusus yang harus Anda tulis sesuai dengan kebutuhan Anda. Dan poin romainl adalah bahwa jika Anda melakukan sesuatu yang salah Anda dapat dengan mudah berakhir lebih banyak ruginya daripada kebaikan. Perhatian disarankaneslint --fix
, saya lebih suka memiliki ini di tingkat editor.Jawaban:
Seperti disebutkan dalam komentar, perhatikan konsekuensi modifikasi ini terhadap lingkungan kerja Anda (ketahuilah aturan eslint mana yang Anda gunakan untuk "memperbaiki" berbagai hal).
Untuk menjawab pertanyaan Anda: menambahkan opsi ke eksekusi eslint dengan sintaksis sangat mudah . Cukup tambahkan ini ke
.vimrc
:Tetapi karena eslint dijalankan pada file setelah vim menulis buffernya ke file, vim tidak tahu tentang perbaikan yang tidak dilakukan eslint. Jadi, entah bagaimana vim harus memuat file lagi (cara manual adalah dengan mengetikkan
:e
mode normal / perintah). Untuk melakukan itu, kita dapat menggunakan opsi autoread bersama dengan waktu pemeriksaan :Untuk memanggil waktu pemeriksaan, kita dapat menggunakan autocmd yang dijalankan setiap kali buffer ditulis ke file. Tetapi karena sintaksis menggunakan autocmd-nya sendiri pada kejadian yang sama,
BufWritePost
kita harus menambahkan autocmd setelah sintaksis menambahkan sendiri. Saya menemukan bahwa ini adalah kasus ketika kita menambahkan autocmd kami diVimEnter
:Jadi setelah menambahkan ketiga bagian ke
.vimrc
vim Anda harus berperilaku seperti yang diharapkan (lint dan koreksi otomatis pada file save:w
).sumber
Solusi yang diberikan dalam jawaban Jepz tidak sepenuhnya bekerja untuk saya.
eslint
dipanggil dengan benar dengan--fix
opsi. Namun, mungkin itu karena internal yang telah berubah, tetapi sepertinyachecktime
dipanggil sebelum akhireslint --fix
, jadi memuat ulang file tidak berfungsi dengan baik, memicufile has changed, are you sure you want to write to it?
pada save berikutnya.Namun, dengan menggali masalah, saya telah menemukan kait tersembunyi yang tampaknya memicu setelah pemeriksaan Sintaksis selesai, disebut
SyntasticCheckHook
( sumber ).Dengan ini, Anda cukup menelepon
checktime
setelah pemeriksaan Syntastic berjalan.Ini kode terakhir saya:
Sunting: Saya pribadi telah beralih ke
ALE
linting, yang mendukung perbaikan otomatis secara asli.sumber