Ich frage mich, ob ich eine neue Zeile einfügen kann, ohne den normalen Modus zu verlassen. Zum Beispiel habe ich zwei Zeilen:
this is line one
this is line two
Und der Cursor befindet sich in Zeile eins. Jetzt möchte ich eine neue Zeile zwischen Zeile eins und Zeile zwei, wie folgt:
this is line one
this is line two
Ich weiß, dass ich im normalen Modus einfach drücken kann o
. Dies würde jedoch in den Einfügemodus wechseln.
Wie kann ich eine neue Zeile einfügen und im normalen Modus bleiben?
normal-mode
Alex
quelle
quelle
Antworten:
Ich benutze dafür ein Mapping:
Auf diese Weise können Sie mit eine Zeile unter Ihrem Cursor
<Leader>o
und mit eine Zeile in der vorherigen Zeile einfügen<Leader>O
.Hinweis: Man könnte argumentieren, dass so viele Tastenanschläge erforderlich sind,
o<Esc>
aber Sie haben hoffentlich Ihren Anführer ausgewählt, um diese Art der Zuordnung zu vereinfachen. Ich bin mir auch nicht sicher, ob es einen eingebauten Weg gibt, dies zu tun.quelle
Eine Lösung, die den Einfügemodus nicht durchläuft, den Cursor nicht bewegt und es Ihnen ermöglicht, mithilfe eines Zählers mehrere Zeilen gleichzeitig anzufügen ( 3\ousw.):
quelle
Ich persönlich empfehle die Verwendung des Unimpaired-Plugins von Tim Pope . Es gibt viele Zuordnungen, aber die, nach denen Sie suchen, sind
[<space>
und]<space>
die jeweils leere Linien über und unter der aktuellen Linie erzeugen. Unimpaired bietet außerdem nützliche Zuordnungen zum Durchlaufen der Quickfix-Liste, der Pufferliste, des Optionswechsels und vieler anderer Elemente. Sehen Sie:h unimpaired
für mehr.Wenn Sie kein unbeeinträchtigtes Plugin verwenden möchten, aber die folgenden Zuordnungen mögen, sind einige schnelle Zuordnungen, die Sie in Ihre
~/.vimrc
Datei einfügen können:quelle
Wenn Sie keine Zuordnungen hinzufügen möchten, können Sie
yy
eine leere Zeile ziehen und dannp
für unterhalb des Cursors undP
für oberhalb des Cursors einfügen .quelle
o
Register mit"oyy
und fügen Sie es bei Bedarf mit von dort aus ein"op
.Mein Mapping verwendet
Shift-Enter
. Sie unterscheidet sich von den anderen dadurch, dass der Cursor mit der Markierung o in dieselbe Zeile und Spalte zurückgesetzt wird.quelle
<S-Enter>
in Terminalemulatoren nicht funktioniert (es funktioniert nur in gVim). Sie müssen also eine andere Tastenkombination auswählen, um sieDiese Antwort von Maxim Kim war lebensverändernd:
und mein Riff drauf:
Setzen Sie diese Zeilen in Ihre
vimrc
. Dann gehen Sie zu Beginn der zweiten Zeile der Datei und Hits Space, Enteroder gehen Sie bis zum Ende der ersten Zeile und Hits Shift+Space, Enter. Entweder wird die leere Zeile zwischen der ersten und der zweiten Zeile eingefügt und Sie bleiben im normalen Modus.Sie können diese auch für jede andere einzelne Taste verwenden - drücken Sie Spaceoder Shift+Spacefolgen Sie der gewünschten Taste, um sie einzufügen oder anzufügen.
quelle
Diese Zuordnungen werden genau das tun, was Sie suchen.
Diese fügen n Zeilenumbrüche vor oder nach dem Cursor ein. Halten Sie den Cursor genau dort, wo er ist, ohne die Sprungliste zu ändern.
Eine andere Lösung besteht darin, einfach eine Verknüpfung zu erstellen, die das unbenannte Register mit einer neuen Zeile füllt. Dann können Sie einfach die Befehle put, p oder P verwenden, um Zeilenumbrüche einzufügen. Beispielsweise:
quelle
Mein Mapping dafür
Anders als bei statox, da sich der Cursor an derselben Stelle befindet.
quelle
<silent>
bedeuten?:h map-silent
.Meine persönliche Lösung fügt ein Zeilenumbruchzeichen in das Ausdrucksregister ein, fügt es nach der aktuellen Zeile ein und springt dann an die ursprüngliche Position zurück:
quelle