Mengoreksi kesalahan pengejaan secara otomatis


19

Saya telah mengaktifkan pemeriksaan ejaan dengan

:set spell spelllang=en_us

Saya sekarang dapat memperbaiki ejaan kata dengan mengetik 1z=(yaitu, pilih 1koreksi ejaan st z=) ( )).

Bagaimana saya bisa membuat ini berjalan secara otomatis pada kata sebelumnya setiap kali saya mengetik spasi, tanpa penundaan? Itu juga mencoba untuk "memperbaiki" kata-kata yang sudah dieja dengan benar (itulah sebabnya saya tidak bisa melakukan sesuatu seperti inoremap <space> <esc>mmb1z=`ma<space>), jadi saya hanya ingin memperbaiki setiap kata yang saya ketik jika salah eja .

Apakah ada cara untuk mengoreksi kata yang salah eja dalam Vim?


2
Lihat ini
Arturo Volpe

1
@ ArturoVolpe Itu sepertinya jawaban yang sah untuk pertanyaan itu.
bsmith89

bisakah Anda menggabungkan kesalahan 's' sebelumnya dalam remap? Saya akan menambahkan sebagai jawaban tetapi tidak tahu bagaimana melakukan remap jadi saya akan meninggalkan itu untuk orang lain.
Nick J Adams

Jawaban:


8

Saya akan merekomendasikan agar secara otomatis memperbaiki setiap kata yang ditandai salah, karena dua alasan.

  • Pertama, Anda akan mendapatkan banyak kesalahan positif pada hal-hal yang Anda maksudkan, terutama dalam penulisan yang lebih teknis. Anda tentu dapat (dan mungkin harus) menambahkan kedua kamus Anda sehingga mereka dikenali dan disarankan. Namun, jika Anda tidak melihat bahwa mereka autocorrected, mereka bisa menyelinap melalui ke versi final dari dokumen-atau lebih buruk, jika Anda menulis kode sedang atau file konfigurasi (misalnya, mengubah xminuntuk minakan membuat grafik tampilan yang sama sekali salah). Komentar juga dapat menjadi aneh (misalnya, saya memiliki "Label dan instruksi nullary" berubah menjadi "Label dan membatalkan instruksi," yang mengubah makna (a) dari frasa kata benda menjadi imperatif, dan (b) untuk mengartikan sesuatu yang sama sekali berbeda. )
  • Kedua, koreksi otomatis sangat buruk pada kata-kata pendek. Dalam pengalaman saya, itu cenderung lengkap dengan kata terdekat, yang, dengan, misalnya, kata tiga huruf, bisa sangat berbeda dari apa yang Anda maksudkan. Jika Anda bermaksud mengetik dari tetapi sengaja ketik fo , itu akan diperbaiki untuk beberapa -bukan apa yang Anda inginkan! Sekali lagi, ini bisa sulit ditangkap dalam revisi sepintas.

Dengan pemikiran itu, saya pikir tujuan Anda sebenarnya adalah untuk dapat dengan cepat mengenali dan memperbaiki kesalahan ketik.

Saya menggunakan pemetaan berikut untuk mencapai ini:

" Go back to last misspelled word and pick first suggestion.
inoremap <C-L> <C-G>u<Esc>[s1z=`]a<C-G>u

" Select last misspelled word (typing will edit).
nnoremap <C-K> <Esc>[sve<C-G>
inoremap <C-K> <Esc>[sve<C-G>
snoremap <C-K> <Esc>b[sviw<C-G>

Saat saya mengetik teks isi, kata yang salah eja akan digarisbawahi, sesuai pengaturan penyorotan saya. Jika saya melihat bahwa kata itu relatif panjang dan ini adalah kesalahan ketik yang sederhana, maka saya dapat memperkirakan bahwa spellmungkin akan memperbaikinya dengan benar, jadi saya menekan <C-L>dan terus mengetik. Jika itu kata yang lebih pendek atau saya perkirakan akan salah, saya dapat menekan <C-K>dan menyesuaikannya sendiri. Akhirnya, jika spelltiba-tiba mengoreksi ke hal yang salah, saya telah menetapkan penanda undo <C-G>u, jadi saya bisa <Esc>ucWmengubahnya secara manual. Ini membuat alur kerja yang sangat cepat sebagian besar waktu.


Memperbaiki setiap kata secara otomatis adalah ide yang bagus .
Kaya

2

Secara kebetulan, saya telah menulis sebuah plugin yang melakukan hal ini. Ini disebut Vim You, Autocorrect!

Setelah menginstal, ketik :EnableAutocorrectuntuk menyalakannya di buffer apa pun, dan Anda akan segera melihat bahwa keresahan wchargin cukup tidak berdasar.


Perhatikan komentar Anda pada jawaban wchargin yang ditandai sebagai tidak sopan, saya mengeditnya untuk menghapus "Poppycock!" dan mengibarkan bendera. Bukan masalah besar, hanya FYI.
Martin Tournoij

@ MartinTournoij Tidak apa-apa. Banyak orang di reddit juga tidak mendapat lelucon . :) (Terima kasih atas semua yang dilakukan.)
Rich

Mr Rich paket mana yang ingin saya instal dan ketik: EnableAutoCorrect i didnt mengerti
MP Creations

@MPCreations Apakah Anda menggunakan pengelola plugin?
Kaya

@MPCreations Mungkin lihat jawaban untuk vi.stackexchange.com/questions/613/… jika Anda tidak tahu cara memasang plugin
Kaya
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.