在vim中插入空白行?


25

我经常发现在vim中进行编辑时,需要在当前行的下方或上方插入空白行。oO会执行此操作,但随后他们会切换到插入模式,这很烦人。是否有任何内置命令可以执行此操作,这些命令仍将保留在正常模式下?

Answers:


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>

我现在使用它,因此将其标记为“正确”的解决方案。但是这里所有的答案都很棒。
Andrew Ferrier 2014年

很棒的提示,尽管我更喜欢映射 <Space>o<Space>O不是。
simlev

26

我一直在用这些

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

在我.vimrc多年。

Enter键在当前下方插入空白行,按Shift + Enter键在上方插入空白行。


尽管所有这些答案都不错,但我将其标记为正确,因为它是最简单的解决方案。
Andrew Ferrier 2013年

很简单!这应该是公认的答案!
Sheharyar

如果您不希望在按下Enter键时移动光标,请放在k第一张地图j的末尾和第二张地图的末尾。
zondo

1
注意,映射Shift-Enter仅适用于vim的GUI版本,不适用于终端版本。 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和Shunz先生的解决方案会将光标移动到新插入的行,而此解决方案以及Ingo Karkat的解决方案都将光标保持在同一位置。


1

不,没有内置命令。

这些映射可以满足您的要求:

nnoremap <leader>o o<Esc>
nnoremap <leader>O O<Esc>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.