Rechtschreibfehler werden automatisch korrigiert

19

Ich habe die Rechtschreibprüfung mit aktiviert

:set spell spelllang=en_us

Ich kann jetzt die Rechtschreibung eines Wortes korrigieren, indem ich tippe 1z=(das heißt, ich wähle die 1Rechtschreibkorrektur ( z=)).

Wie kann ich dafür sorgen, dass das vorherige Wort beim Eingeben eines Leerzeichens automatisch und ohne Verzögerungen verwendet wird? Es wird auch versucht, Wörter zu "korrigieren", die bereits richtig geschrieben sind (weshalb ich so etwas nicht machen kann inoremap <space> <esc>mmb1z=`ma<space>). Deshalb möchte ich jedes Wort, das ich eingebe, nur korrigieren, wenn es falsch geschrieben ist .

Gibt es eine Möglichkeit, falsch geschriebene Wörter in Vim automatisch zu korrigieren?

Türknauf
quelle
2
Siehe dies
Arturo Volpe
1
@ArturoVolpe Das scheint eine legitime Antwort auf die Frage zu sein.
bsmith89
Könnten Sie den vorherigen Fehler '[s' in einer Neuzuordnung kombinieren? Ich würde als Antwort hinzufügen, weiß aber nicht, wie ich die Neuzuordnung machen soll, also überlasse ich das jemand anderem.
Nick J Adams

Antworten:

8

Ich würde aus zwei Gründen davon abraten, jedes Wort, das als falsch markiert ist, automatisch zu korrigieren.

  • Erstens erhalten Sie eine Menge falscher Positivmeldungen zu Dingen, die Sie eigentlich tippen wollten, insbesondere bei technischen Texten. Sie können (und sollten vielleicht) diese beiden Wörterbücher hinzufügen, damit sie erkannt und empfohlen werden. Wenn Sie jedoch nicht bemerken, dass sie automatisch korrigiert werden, können sie in eine endgültige Version eines Dokuments übergehen - oder, was noch schlimmer ist, wenn Sie Code oder eine Konfigurationsdatei schreiben (z. B. durch Ändern xminvon minwürde das Diagramm vollständig aussehen) falsch). Kommentare können auch seltsam werden (z. B. habe ich "Label and nullary instruction" in "Label and nullify instruction" ändern lassen, wodurch sich die Bedeutung (a) von einer Nominalphrase in einen Imperativ und (b) in etwas völlig anderes ändert. )
  • Zweitens ist die Autokorrektur ziemlich schlecht in kurzen Worten. Meiner Erfahrung nach neigt es dazu, auf das nächste Wort zu vervollständigen, was beispielsweise bei Wörtern mit drei Buchstaben völlig anders sein kann als das, was Sie meinen. Wenn Sie meinen , eintippen von aber aus Versehen geben fo , wird es korrigiert werden einige -nicht , was Sie wollten! Auch diese können in flüchtigen Überarbeitungen schwer zu fassen sein.

Vor diesem Hintergrund ist es meines Erachtens Ihr eigentliches Ziel, Druckfehler schnell zu erkennen und zu beheben.

Ich benutze die folgenden Zuordnungen, um dies zu erreichen:

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

Wenn ich Text eingebe, werden alle falsch geschriebenen Wörter gemäß meinen Hervorhebungseinstellungen unterstrichen. Wenn ich sehe, dass das Wort relativ lang ist und ein einfacher Tippfehler ist, kann ich mir vorstellen, dass das spellProblem wahrscheinlich behoben wird, also drücke ich <C-L>und tippe einfach weiter. Wenn es sich um ein kürzeres Wort handelt oder ich damit rechne, dass es falsch ist, kann <C-K>ich es selbst drücken und anpassen. Wenn sich spellunerwartet das Falsche ändert , habe ich eine Rückgängig-Markierung mit gesetzt <C-G>u, damit ich sie nur <Esc>ucWmanuell ändern kann. Dies führt in den meisten Fällen zu einem sehr schnellen Workflow.

wchargin
quelle
Es ist eine hervorragende Idee , jedes Wort automatisch zu korrigieren .
Rich
2

Zufällig habe ich ein Plugin geschrieben, das genau das tut. Es heißt Vim You, Autokorrektur!

Nach der Installation geben Sie :EnableAutocorrectes in jedem Puffer eingeschaltet werden , und Sie werden bald sehen , dass wchargin der Angstmacherei ganz unbegründet.

Reich
quelle
Beachten Sie, dass Ihr Kommentar zu wchargins Antwort als unhöflich markiert wurde. Ich habe ihn bearbeitet, um "Poppycock!" Zu entfernen. und entließ die Flagge. Keine große Sache, nur zu Ihrer Information.
Martin Tournoij
@MartinTournoij Es ist in Ordnung. Viele Leute auf reddit haben auch den Witz nicht verstanden . :) (Vielen Dank für die Köpfe nach oben.)
Rich
mr Rich welches Paket ich installieren und eingeben möchte: EnableAutoCorrect Ich habe nicht verstanden
MP Creations
@MPCreations Benutzt du einen Plugin Manager?
Rich
@MPCreations Vielleicht werfen Sie einen Blick auf die Antworten auf vi.stackexchange.com/questions/613/…, wenn Sie nicht wissen, wie man ein Plugin installiert
Rich