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.