Gibt es eine Möglichkeit, den Cursor in vi / vim um eine relative Anzahl von Zeilen zu bewegen? Angenommen, Sie haben den Cursor 10 Zeilen unter einem Codeblock, den Sie entfernen möchten. Wenn Sie die Zeilennummern in relativer Reihenfolge angezeigt haben, wäre es schön, einen Befehl "10 Zeilen hochspringen" zu haben, der Sie dorthin führt.
Oder ist es vielleicht besser, die absoluten Zeilennummern anzuzeigen und xgg zu gehen, wobei x die Zeilennummer ist?
Antworten:
Ja, natürlich gibt es einen Weg.
j
undk
bewege dich eine Zeile nach unten und oben, also10j
und10k
bewege dich zehn Zeilen nach unten und oben. Sie können jede Bewegung wiederholen, indem Sie eine Zahl davor setzen.Vielleicht möchten Sie auch,
set relativenumber
wenn Sie viel tun - dies hilft Ihnen beim Zählen, indem Sie Zeilennummern relativ zur aktuellen Zeile anstelle von absoluten Zahlen drucken.quelle
set relativenumber
und hinzugefügt wirdset number
. Dies gibt relative Zeilennummern mit einer absoluten Zeilennummer für die Zeile an, auf der sich Ihr Cursor befindet.enter
(für absolute Zeilennummern einfach einen Doppelpunkt voranstellen). Wenn Sie es gewohnt sindj
undk
und eine normale Tastaturlayout sein , dass nicht allzu hilfreich, aber wie ein Pfeil betriebene Colemak Benutzer,enter
ist leichter zu erreichen als die Colemakj
(die QWERTY -y
Taste)Das Verschieben von 10 Zeilen nach oben und unten passt möglicherweise nicht zu Ihrer Aufgabe und anderen Optionen. Betrachten Sie andere Bewegungen:
Ctrlf, CtrlbSeite nach vorn und zurück.
}, {Bewegt durch einen Absatz nach vorn und zurück.
Sie können Regeln in Ihr vimrc schreiben, um sie
10j
an einen Schlüssel zu binden , z. B.J
um 10 Zeilen nach unten zu verschieben, indem Sie Ihrer vimrc-Datei die folgende Zeile hinzufügen:map <S-j> 10j
Sie würden jedoch den nützlichen vorhandenen
J
Befehl überschreiben (zwei Zeilen verbinden). Es kann schwierig sein, eine gut positionierte, nicht verwendete Tastenkombination für10j
/10k
zu finden. Daher empfehle ich, die vorhandenen Bewegungen zu verwenden, die ich erwähnt habe.Vielleicht möchten Sie auch wissen, dass Sie rückwärts zu einem Wort gehen können, das Sie sehen, indem Sie es tun:
?someword
und vorwärts zu einem Wort, das Sie sehen, indem Sie es tun/someword
. Diese sind schneller als der Versuch, 10 Zeilen nach oben / unten zu bewegen und dann den Cursor an der genauen Position neu zu positionieren. Wenn Ihnen keine einfache Suchzeichenfolge für die betreffende Zeile einfällt, können Sie jederzeit zur Zeilennummer wechseln, wie Sie gesagt haben (xgg
).quelle
Ich habe mit vim rumgespielt und festgestellt , dass du -dich nach oben und +unten bewegst, damit du:
oder Sie könnten verwenden, kda Sie höchstwahrscheinlich an hjk lCursorbewegungen gewöhnt sind.
quelle
enter
funktioniert genauso wie+
nach einer Zahl und ist die meiste Zeit leichter zu erreichen