Vim: Leere Zeile über der aktuellen Zeile einfügen (nicht offen, dh ohne in den Einfügemodus zu wechseln)

21

Gibt es eine Möglichkeit, eine neue Zeile über der aktuellen einzufügen, ohne die Zeile zu öffnen (also ohne in den Einfügemodus zu wechseln)? Das heißt, wie "O", aber ohne zu öffnen.

tmadsen
quelle
2
Was bedeutet "eine Linie eröffnen"?
Matteo Riva
"Öffnen einer Zeile" bedeutet, vom normalen Modus in den Einfügemodus zu wechseln. Dies geschieht, wenn Sie "O" (oh) drücken.
Tmadsen

Antworten:

8

Ich benutze Tim Pope Plugin unimpared , die einen Befehl speziell für diesen Zweck hat:

[<space>

Und wenn Sie nach der Zeile, in der Sie sich befinden, ein Leerzeichen einfügen möchten:

]<space>

Eric Mathison
quelle
28

Die Definition Ihrer Anfrage lautet O.

Logischerweise wäre beim Einfügen eine neue Zeile oben O.

So fügen Sie vor dem Curser: i
Nachher: a
Vor der Linie (home): I
Fügen Sie am Ende der Zeile:A

Ich denke, Sie kommen am nächsten, wenn Sie Iden Cursor an den Anfang der Zeile setzen.

Josh K
quelle
Vielleicht war ich nicht klar. Das Szenario sieht folgendermaßen aus: Ich bin im normalen Modus und möchte eine leere Zeile über der Zeile einfügen, in der ich mich gerade befinde, während ich im normalen Modus bleibe. Durch Drücken von "O" wechsle ich in den Einfügemodus. Vielleicht gibt es keine Möglichkeit und das ist in Ordnung, dachte nur, ich würde fragen :)
tmadsen
3
Karte es einfach,m`O+Esc`
Josh K
1
Gute Idee, hatte das nicht bedacht. Hat ein: noremap <Führer> O O <ESC>
tmadsen
2tmadsen: Sie können dies <yourkey> O <ESC>
nXqd
9
:h append()

Der Cursor wird nicht bewegt, Sie können beliebig viele Zeilen (leer oder nicht) einfügen und die vorherige Positionsmarke wird nicht geändert.

call append(line('.')-1, '')
Luc Hermitte
quelle
yah, das ist +1 ordentlich! / ich ändere sein vimrc
akira
Nun, es hat ein paar Vorteile, wenn es um Skripte geht. Es ist etwas übertrieben, etwas anderes zu tippen.
Luc Hermitte
+1 für eine Lösung, die funktioniert, unabhängig davon, wie man eingestellt hatformatoptions
Micah Smith
5

Sie können jede beliebige Taste oder Tastenfolge zuordnen

m`O<ESC>``

Dadurch wird eine leere Zeile über der aktuellen eingefügt, sodass Sie sich im normalen Modus befinden und die Cursorposition nicht verändert wird.

Matteo Riva
quelle
Der Befehl, dies Alt-O zuzuordnen, lautet also: map <Mo> m`O <ESC> ``
K Robinson
Das ist richtig.
Matteo Riva
2
:nmap <CR>_i<CR><ESC>
Akira
quelle