Вставить пустую строку в vim?


25

Я часто обнаруживаю необходимость вставлять пустую строку под или над текущей строкой при редактировании в vim. oи Oбудет делать это, но впоследствии они переключаются в режим вставки, что раздражает. Есть ли встроенная команда для этого, которая останется в обычном режиме?

Ответы:


10

Оба плагина Тим Поуп, а также мой собственный плагин LineJuggler предоставляют [<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вместо.
— Симлев

26

Я использовал эти

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

по моему .vimrcгодами.

Нажмите Enter, чтобы вставить пустую строку ниже текущей, Shift + Enter, чтобы вставить ее выше.


Я отмечаю это правильно, так как это самое простое решение, хотя все эти ответы хорошие.
— Эндрю Ферье

Так просто! Это должен быть принятый ответ!
— Шехарьяр

Если вы не хотите, чтобы курсор перемещался при нажатии Enter, поместите kв конец первой карты и jв конец второй карты.
— Зондо

1
Обратите внимание, что отображение Shift-Enter работает только с версией графического интерфейса vim, а не с версией терминала. stackoverflow.com/questions/16359878/vim-how-to-map-shift-enter
— ishmael

7

Еще один способ вставить строки выше или ниже:

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

Обратите внимание, что решение от romainl и Mr 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.