我经常发现在 vim 中编辑时需要在当前行下方或上方插入一个空白行。o
并且O
会这样做,但它们随后会切换到插入模式,这很烦人。 是否有任何内置命令可以执行此操作并保持在正常模式下?
答案1
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>
答案2
我一直在用这些
map <Enter> o<ESC>
map <S-Enter> O<ESC>
在我的.vimrc
多年里。
按进入在当前行下方插入一个空白行,Shift + Enter将其插入到上面。
答案3
还有另一种在上方或下方插入行的方法:
nnoremap <Enter> :call append(line('.'), '')<CR>
nnoremap <S-Enter> :call append(line('.')-1, '')<CR>
请注意,romainl 和 Mr Shunz 的解决方案会将光标移动到新插入的行,而此解决方案以及 Ingo Karkat 的解决方案将使光标保持在同一位置。
答案4
不,没有内置命令。
这些映射可以实现您想要的功能:
nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>