29 Stimmen

Warum positioniert Vim den Cursor bei $ (Zeilenende) um ein Zeichen versetzt?

Beobachten Sie eine Zeile in einer Vim-Instanz:

Jetzt drücke ich $:

Warum geht mein Cursor nicht bis zum Ende? Sobald ich versuche, den Text einzufügen, wird er eingefügt vor das letzte Zeichen! Selbst wenn ich versuche, im normalen Modus erneut nach rechts zu gehen, erhalte ich die Glocke. Seltsamerweise kann ich im Bearbeitungsmodus mit der rechten Pfeiltaste zum tatsächlichen Ende der Zeile gehen!

Weiß jemand, warum Vim dies tut? Übrigens auf 7.3. Danke für die Hilfe.

33voto

Vortura Punkte 1265

Drücken Sie $ im Befehlsmodus bewirkt, dass der Cursor an das Ende der Zeile springt und somit das letzte Zeichen hervorgehoben wird. Drücken Sie i hier vor dem letzten Zeichen einfügen, oder a an die Zeile anzuhängen. Hier ist es etwas zweideutig, weil Sie ein Pipe-Zeichen als Cursor verwenden und nicht einen rechteckigen Blockcursor. Werfen Sie einen Blick auf ":help termcap-cursor-shape", wenn Sie das ändern wollen.

Wenn das Ziel ist, an das Ende der Zeile anzuhängen, A springt mit einem einzigen Tastendruck an das Ende der Zeile und schaltet in den Einfügemodus.

11voto

Alex Budovski Punkte 17158

Utilice a um ein Zeichen nach dem aktuellen anzuhängen.

Oder, um zum Ende der Zeile zu gehen und in einem Schritt anzuhängen, verwenden Sie capital A . D.h. shiftA .

Ähnlich shift - I um am Anfang der Zeile einzufügen, ohne vorher die Taste ^ .

4voto

Xavier T. Punkte 39220

Der Cursor kann nicht zwischen zwei Zeichen stehen, er befindet sich immer auf einem Zeichen.

Wenn Sie die Taste $ では x wird das letzte druckbare Zeichen der aktuellen Zeile korrekt gelöscht.

Was Sie beobachten, ist die Tatsache, dass die Verwendung von i fügen Sie immer Ihren Text ein vor das ausgewählte Zeichen. Wenn Sie einfügen möchten nach das ausgewählte Zeichen, müssen Sie mit a oder besser A wie bereits erwähnt wurde.

Mit anderen Worten:
i bedeutet "vor dem Zeichen unter dem Cursor einfügen".
a bedeutet "nach dem Zeichen unter dem Cursor einfügen".

Mnemonik für a a für "anhängen".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X