Wenn ich in vim den Bearbeitungsmodus betrete und verlasse, ohne etwas zu tun, endet das Caret ein Zeichen links. Und wenn ich den Append-Modus betrete und verlasse, bewegt sich das Caret vorwärts und dann rückwärts.
Gibt es eine Möglichkeit, vim so zu konfigurieren, dass das Caret in diesen Fällen in Ruhe gelassen wird?
Idealerweise möchte ich nur immer in den Anhänge-Modus wechseln, ohne das Caret zu bewegen, wenn ich in den Modus eintrete oder ihn verlasse.
(Derzeit verwende ich normalerweise den Einfügemodus, da dies meine Caret-Position bei der Eingabe nicht durcheinander bringt. Das heißt, es sei denn, ich muss an das Ende der Zeile anhängen. In diesem Fall schwöre ich bei vim, dass ich mich so archaisch verhalte Drücken Sie die Esc-Taste und rufen Sie den Append-Modus auf.)
i
odera
ohne darüber nachdenkt, und kann sogar seins
,S
,ci"
, usw. statt der begrenzti
unda
.Antworten:
Diese Frage wird häufig von neuen vi / Vim-Benutzern gestellt. Die Antwort lautet, dass sich der Cursor im normalen Modus immer auf einem Zeichen befindet, während sich der Einfügemodus im Einfügemodus immer zwischen zwei Zeichen befindet (denken Sie daran, das Ende) -of-line ist ein Zeichen). Sie können dies auch in Konsole Vim nicht wirklich sehen, aber in der GUI werden Sie feststellen, dass der Cursor beim Aufrufen des Einfügemodus zu einem Balken zwischen zwei Zeichen wird, anstatt im normalen Modus einen Block über einem Zeichen.
Was Sie also sehen, ist nicht unbedingt der Cursor, der ein Zeichen zurückbewegt, wenn Sie den Einfügemodus verlassen, sondern lediglich ein Zeichen. Die einzig sichere Bewegungsrichtung ist nach links (oder hinten). Sie haben also mehrere Möglichkeiten, in den Einfügemodus zu wechseln:
Einige Leute haben Anstrengungen unternommen, um diese "Bewegung" zu unterdrücken, die sie nicht mögen, aber sie stört unweigerlich Plugins und andere Vim-Skripte, die sie in Zukunft ausführen möchten.
Mein Vorschlag ist, sich daran zu gewöhnen, die Befehle "a" und "i" (und "A" und "I") unter den entsprechenden Umständen zu verwenden.
Die Befehle "o" und "O" sind ebenfalls nützlich zum Lernen. Sehen:
Bearbeiten: Wenn Sie immer noch entschlossen sind, dieses Verhalten zu ändern, versuchen Sie diesen Tipp: Verhindern Sie, dass der Cursor um ein Zeichen nach links bewegt wird
quelle
a
statt zu verwendeni
.<esc>
wird zwar verhindert, dass die meisten Plugins<esc>
ordnungsgemäß funktionieren, aber es wird Sie auch weiterhin nerven, wenn Sie andere Standardfunktionen verwenden, die auf die gleiche Weise in den normalen Modus zurückkehren<esc>
. Das Lernen, den richtigen Schlüssel im laufenden Betrieb zu verwenden, ist die Lösung, die auf lange Sicht skaliert / funktioniert.Ich denke, mit Karat meinst du deinen Cursor und wenn du "i" verwendest, wird dies direkt dort einfügen, wo sich dein Cursor befindet. "A" (was ich glaube, dass du suchst) bewegt den Cursor ein Zeichen nach rechts. Außerdem geht Shift-i (I) zum Anfang der Linie und Shift-a (A) geht bis zum Ende der Linie.
Wenn ich Ihre Frage falsch verstanden habe, entschuldige ich mich.
quelle
Da das Neuzuordnen
<ESC>
als "riskant" eingestuft wird, kombiniere ich es einfach mit einem der Ansätze " Vermeiden Sie die Escape-Taste" und habe Folgendes in meinem.vimrc
:Hinweis: Stellen Sie sicher, dass am Ende der Zeile keine Leerzeichen stehen.
Einfach, aber vollständig zertifiziert als "funktioniert gut für mich", da ich genau das sonst von Hand eingeben müsste.
Unabhängig davon, ob ich das Caret-Verhalten verwende
a
oderi
immer noch bewege und es mich verdammt oft nervt, ist das nächste, was ich eingeben möchte,d$
das Löschen bis zum Ende einer Zeile usw.quelle
Hier ist meine Lösung:
Es ist lustig. Dieselbe Frage besteht auf allen drei Websites: SO, SU, Unix + Linux.
quelle