Wstawianie pustej linii w vimie?


25

Dość często stwierdzam, że muszę wstawić pustą linię poniżej lub powyżej bieżącej linii podczas edycji w vimie. oi Ozrobi to, ale następnie przełączą się w tryb wstawiania, co jest denerwujące. Czy jest jakieś wbudowane polecenie, aby to zrobić, które pozostanie w trybie normalnym?

Odpowiedzi:


10

Zarówno nienaruszona wtyczka Tima Pope'a, jak i moja własna wtyczka LineJuggler zapewniają [<Space>i ]<Space>mapowania, aby dodać [count]puste linie powyżej / poniżej bieżącej linii.

Zasadniczo sprowadza się do tego:

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>

Teraz używam tego, więc oznaczyłem to jako „poprawne” rozwiązanie; ale wszystkie odpowiedzi tutaj są świetne.
Andrew Ferrier,

Świetna wskazówka, chociaż wolałem mapować <Space>oi <Space>Ozamiast tego.
simlev

26

Korzystałem z nich

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

w moim .vimrcod lat.

Naciśnij Enter, aby wstawić pusty wiersz poniżej bieżącego, Shift + Enter, aby wstawić go powyżej.


Zaznaczam to poprawnie, ponieważ jest to najprostsze rozwiązanie, chociaż wszystkie te odpowiedzi są dobre.
Andrew Ferrier,

Tak prosty! To powinna być zaakceptowana odpowiedź!
Sheharyar

Jeśli nie chcesz, aby kursor się poruszał po naciśnięciu Enter, umieść kna końcu pierwszej mapy i jna końcu drugiej mapy.
zondo

1
Zauważ, że mapowanie Shift-Enter działa tylko z wersją GUI vima, a nie z wersją terminalową. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
ishmael

7

Jeszcze inny sposób wstawiania linii powyżej lub poniżej:

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

Zwróć uwagę, że rozwiązanie romainl i Mr Shunz przeniesie kursor do nowo wstawionej linii, podczas gdy ten, a także ten z Ingo Karkat, utrzyma kursor w tym samym miejscu.


1

Nie, nie ma do tego wbudowanego polecenia.

Te mapowania robią, co chcesz:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.