Autokorekty błędów ortograficznych

19

Włączyłem sprawdzanie pisowni za pomocą

:set spell spelllang=en_us

Teraz mogę poprawić pisownię słowa, pisząc 1z=(to znaczy wybierz 1poprawkę pisowni st ( z=)).

Jak ustawić automatyczne uruchamianie tego słowa przy poprzednim słowie za każdym razem, gdy wpisuję spację, bez żadnych opóźnień? Próbuje także „naprawić” słowa, które są już poprawnie napisane (dlatego nie mogę zrobić czegoś takiego inoremap <space> <esc>mmb1z=`ma<space>), więc chcę poprawić każde słowo, które wpisuję, jeśli jest błędne .

Czy jest jakiś sposób autokorekty błędnie napisanych słów w Vimie?

Klamka
źródło
2
Zobacz to
Arturo Volpe,
1
@ArturoVolpe To wydaje się uzasadnioną odpowiedzią na pytanie.
bsmith89
czy możesz połączyć poprzednie błędy „[s” w remapie? Dodałbym jako odpowiedź, ale nie wiem jak wykonać remap, więc zostawię to komuś innemu.
Nick J Adams

Odpowiedzi:

8

Odradzam automatyczne naprawianie każdego słowa, które jest źle oznaczone, z dwóch powodów.

  • Po pierwsze, dostaniesz wiele fałszywych pozytywów na temat rzeczy, które chciałeś pisać, szczególnie w bardziej technicznym piśmie. Z pewnością możesz (i być może powinieneś) dodać te dwa do swojego słownika, aby zostały rozpoznane i zasugerowane. Jeśli jednak nie zauważysz, że są one automatycznie korygowane, mogą przejść do ostatecznej wersji dokumentu - lub gorzej, jeśli piszesz kod lub plik konfiguracyjny (np. Zmiana xminna minspowoduje, że wykres będzie wyglądał całkowicie źle). Komentarze mogą również stać się dziwne (np. Zmieniłem „Etykietę i instrukcję zerowania” na „Etykietę i instrukcję nullify”, co zmienia znaczenie (a) z wyrażenia rzeczownikowego na rozkazujący i (b) na coś zupełnie innego. )
  • Po drugie, autokorekta jest dość uboga w krótkie słowa. Z mojego doświadczenia wynika, że ​​dopełnia się ono do najbliższego słowa, które np. Trzema literami może zupełnie różnić się od tego, co masz na myśli. Jeśli masz na myśli wpisywać od ale przypadkowo wpisać fo , zostanie on skorygowany do kilku -Nie co chciałeś! Ponownie mogą być trudne do złapania w pobieżnych wersjach.

Mając to na uwadze, myślę, że Twoim prawdziwym celem jest możliwość szybkiego rozpoznania i naprawy błędów typograficznych.

Aby to osiągnąć, używam następujących mapowań:

" 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>

Kiedy piszę tekst podstawowy, wszelkie błędnie napisane słowa będą podkreślone, zgodnie z moimi ustawieniami podświetlania. Jeśli widzę, że słowo jest stosunkowo długie i jest to zwykła literówka, to mogę stwierdzić, spellże prawdopodobnie to naprawi poprawnie, więc uderzyłem <C-L>i po prostu pisałem . Jeśli jest to krótsze słowo lub spodziewam się, że źle go zrozumiem, mogę go nacisnąć <C-K>i dostosować. Wreszcie, jeśli spellnieoczekiwanie poprawi się niewłaściwa rzecz, ustawiłem znacznik cofania za pomocą <C-G>u, więc mogę po prostu <Esc>ucWzmienić go ręcznie. To sprawia, że ​​bardzo szybko przebiega praca.

wchargin
źródło
Automatyczne naprawianie każdego słowa to doskonały pomysł .
Bogaty
2

Przez przypadek napisałem wtyczkę, która właśnie to robi. Nazywa się Vim You, Autocorrect!

Po zainstalowaniu wpisz, :EnableAutocorrectaby włączyć go w dowolnym buforze, a wkrótce przekonasz się, że wchodzenie w scaremongering jest dość bezpodstawne.

Bogaty
źródło
Uwaga: Twój komentarz do odpowiedzi wchargin został oznaczony jako niegrzeczny, edytowałem go, aby usunąć „Poppycock!” i odrzucił flagę. Nie jest to wielka sprawa, po prostu FYI.
Martin Tournoij,
@MartinTournoij W porządku. Wiele osób na reddit również nie rozumiało żartu . :) (Dzięki za heads up.)
Rich
Pan Rich, który pakiet chcę zainstalować i wpisać: EnableAutoCorrect, którego nie rozumiem
MP Creations
@MPCreations Czy korzystasz z menedżera wtyczek?
Bogaty
@MPCreations Może zajrzyj do odpowiedzi na vi.stackexchange.com/questions/613/…, jeśli nie wiesz, jak zainstalować wtyczkę
Rich