Einfügen einer Leerzeile in vim?


25

Ich stelle ziemlich oft fest, dass ich beim Bearbeiten in vim eine leere Zeile entweder unter oder über der aktuellen Zeile einfügen muss. ound Otun dies, aber sie wechseln anschließend in den Einfügemodus, was ärgerlich ist. Gibt es einen eingebauten Befehl, der im normalen Modus verbleibt?

Antworten:


10

Sowohl das unbeeinträchtigte Plugin von Tim Pope als auch mein eigenes LineJuggler-Plugin bieten [<Space>und ]<Space>Zuordnungen zum Hinzufügen von [count]Leerzeilen über / unter der aktuellen Zeile.

Im Grunde läuft es darauf hinaus:

nnoremap <silent> ]<Space> :<C-u>put =repeat(nr2char(10),v:count)<Bar>execute "'[-1"<CR>
nnoremap <silent> [<Space> :<C-u>put!=repeat(nr2char(10),v:count)<Bar>execute "']+1"<CR>

Ich benutze dies jetzt, also habe ich dies als die "richtige" Lösung markiert. Aber alle Antworten hier sind großartig.
Andrew Ferrier

Toller Tipp, obwohl ich lieber mape <Space>ound <Space>Ostattdessen.
Simlev

26

Ich habe diese verwendet

map <Enter> o<ESC>
map <S-Enter> O<ESC>

in meinem .vimrcseit Jahren.

Drücken Sie die Eingabetaste , um eine leere Zeile unter der aktuellen einzufügen , und die Umschalttaste + Eingabetaste , um sie über der aktuellen einzufügen.


Ich bezeichne dies als die einfachste Lösung, obwohl all diese Antworten gut sind.
Andrew Ferrier

So einfach! Dies sollte die akzeptierte Antwort sein!
Sheharyar

Wenn Sie nicht möchten, dass sich der Cursor bewegt, wenn Sie die Eingabetaste drücken, platzieren Sie ihn kam Ende der ersten Karte und jam Ende der zweiten Karte.
Zondo

1
Beachten Sie, dass die Zuordnung von Umschalt + Eingabetaste nur mit der GUI-Version von vim funktioniert, nicht mit der Terminalversion. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Noch eine andere Möglichkeit, Zeilen oberhalb oder unterhalb einzufügen:

nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>

Beachten Sie, dass die Lösung von romainl und Mr Shunz den Cursor auf die neu eingefügte Zeile bewegt, während diese und auch die von Ingo Karkat den Cursor an derselben Stelle belassen.


1

Nein, dafür gibt es keinen eingebauten Befehl.

Diese Zuordnungen machen, was Sie wollen:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.