Вставити порожній рядок у 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.