2014-06-26 12 views
9

Wie kann ich die Anzahl der Zeichen nach dem Zeilenende in VIM vorwärts/rückwärts verschieben?Vorwärts/Rückwärts-Zeichenanzahl nach dem Zeilenende in VIM

ich gewusst, dass ich geben kann, zum Beispiel

25l

und gehen nach vorne 25 Zeichen, aber dieser Befehl wird immer am Ende einer Zeile stoppen. Auch gibt es 25go, aber dies geht vom Anfang des Puffers vorwärts, nicht vorwärts von der aktuellen Cursorposition. Ich möchte eine bestimmte Anzahl von Zeichen einschließlich Zeilenendezeichen vorwärts gehen.

Antwort

9

Ich denke, was Sie suchen Raum ist vorwärts und Backspace bewegen sich rückwärts zu bewegen.

Raum wird in der folgenden Zeile fortgesetzt. Wenn Sie in der aktuellen Zeile Leerzeichen hinzufügen möchten, anstatt zur nächsten Zeile zu wechseln, ist :set virtualedit=onemore die Option für Sie.

+0

Dies ist die richtige Antwort. Zum Beispiel bewegt sich 500 [Leertaste] 500 Leerzeichen vorwärts und im Gegensatz zu der L-Taste bewegt sich über das Ende der Zeile. –

4

Sie können virtualedit Option:

:set ve=all 

Virtuelle Bearbeitung bedeutet, dass der Cursor positioniert werden kann, wo tatsächlichen Charakter gibt es keine.

2

Die Option 'whichwrap' bestimmt, welche Bewegungen den Cursor auf eine andere Linie bewegen können. Standardmäßig tut dies keiner der Links/Rechts-Bewegungen.

Die Aufnahme von h,l wird nicht empfohlen, da einige Makros und Plugins vom ursprünglichen Verhalten abhängen und brechen können - Ihr Aufruf zum Testen und Entscheiden. Aber es sollte sicher sein, die und Cursor-Tasten sind über (letztere Paar für Insert-Modus ist und optional)

:set whichwrap+=<,>,[,] 

Dann können Sie von 5 Zeichen bewegen über die Zeilenende über .

Ob das Zeilenumbruchzeichen gezählt wird oder nicht, hängt von der Option 'virtualedit' ab. So schließen Sie das Newline:

:set virtualedit=onemore 
1

Eine weitere Möglichkeit (das erfordert keine Optionen zu ändern, ist aber ausführlich) ist durch die search() Funktion. Das Folgende bewegt den Cursor um 6 Zeichen nach rechts. Es tut dies, indem von der aktuellen Position passende (\%#) 7 Zeichen inklusive Zeilenumbrüche (\_.):

:call search('\%#\_.\{7}', 'ce')