Вставити порожній рядок у vim?


25

Я досить часто виявляю, що мені потрібно вставляти порожній рядок під або над поточним рядком під час редагування в vim. oі Oзроблять це, але згодом вони перейдуть у режим вставки, що дратує. Чи є якась вбудована команда для цього, яка залишиться у звичайному режимі?

Відповіді:


10

Обидва Тіма тата незачепленим плагін , а також мій власний LineJuggler Plugin забезпечують [<Space>і ]<Space>відображення , щоб додати [count]порожні рядки вище / нижче поточного рядка.

В основному, це зводиться до цього:

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>

Я зараз це використовую, тому позначив це як "правильне" рішення; але всі відповіді тут чудові.
Ендрю Фер'є

Чудова порада, хоча я віддав перевагу карту <Space>oі <Space>Oзамість цього.
simlev

26

Я цим користуюся

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

в мої .vimrcроки.

Натисніть Enter, щоб вставити порожній рядок нижче поточного, Shift + Enter, щоб вставити його вище.


Я відзначаю це правильно, оскільки це найпростіше рішення, хоча всі ці відповіді хороші.
Ендрю Фер’є

Так просто! Це має бути прийнята відповідь!
Шехаряр

Якщо ви не хочете, щоб курсор рухався під час натискання клавіші Enter, поставте kв кінці першої карти та jв кінці другої карти.
zondo

1
Зауважте, що відображення Shift-Enter працює лише з GUI-версією vim, а не з термінальною версією. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
Ізмаїла

7

Ще один спосіб вставити рядки над або нижче:

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

Зауважте, що рішення від Romainl і містера Shunz перемістить курсор на щойно вставлений рядок, тоді як цей, а також той, який буде зроблений від Ingo Karkat, буде тримати курсор на одному місці.


1

Ні, для цього немає вбудованої команди.

Ці відображення роблять те, що ви хочете:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.