Я часто нахожу, что мне нужно вставить пустую строку ниже или выше текущей строки при редактировании в vim. o
и O
сделают это, но впоследствии они переключатся в режим вставки, что раздражает. Есть ли какая-либо встроенная команда для этого, которая останется в обычном режиме?
4 ответа
Я использовал эти
map <Enter> o<ESC>
map <S-Enter> O<ESC>
в моем .vimrc
годами.
Нажмите Enter, чтобы вставить пустую строку ниже текущей, Shift + Enter, чтобы вставить ее выше.
Плагин Tim Pope для неповрежденных приложений, а также мой собственный плагин 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>
Еще один способ вставить строки выше или ниже:
nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>
Обратите внимание, что решение от romainl и Mr Shunz переместит курсор на вновь вставленную строку, в то время как этот, а также Ingo Karkat будут держать курсор в том же месте.
Нет, для этого нет встроенной команды.
Эти отображения делают то, что вы хотите:
nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>