Vim中是否有任何与o
或O
相同的命令(在当前之前/之后插入一个空行),但是它也不会切换到插入模式?
答案 0 :(得分:16)
:nnoremap <silent> [<space> :pu! _<cr>:']+1<cr>
:nnoremap <silent> ]<space> :pu _<cr>:'[-1<cr>
说明:
:put
将在下方按行粘贴注册。 (:pu!
以上):pu _
将粘贴黑洞寄存器,该寄存器为空,因此我们得到一个空行'[
和']
标记设置在更改或抽出的文本的开头和结尾。:'[
会将光标移动到最后一次更改的起始行(在这种情况下为put):'[-1
会移动'[
但会再移动一行如果您更喜欢插件,那么我建议Tim Pope unimpaired.vim。哪些提供这些映射,但也会计算。该插件还有许多其他不错的映射。
答案 1 :(得分:0)
在插入模式下:
:normal O
来自vim内联手册:
执行正常模式命令{命令}。这使得它成为可能 执行在命令行上键入的正常模式命令。 {命令} 像打字一样执行。撤消所有命令都撤消 一起。遇到错误时执行停止。如果 给出[!],不会使用映射。 {commands}应该是一个 完整的命令。如果{commands}没有完成命令,那么 最后一个将被中止,就像输入一样。
http://vimdoc.sourceforge.net/htmldoc/various.html#:normal
我在那里得到了提示: https://unix.stackexchange.com/a/16452/7914
答案 2 :(得分:0)
:map <c-j> o<esc>
这是:当你按下 control + j 时,它会在下方添加一行(并进入插入模式)然后切换回正常模式,如果你想留在同一行你在哪里在最后添加k
之前,如下所示:
:map <c-j> o<esc>k
我还添加了 control + k ,以便在我站在
之前添加一行。:map <c-k> O<esc>
就像你之前添加j
一样,以保持同一条线:
:map <c-k> O<esc>j
如果您需要或想要更高级的东西,可以查看以下帖子: Quickly adding and deleting empty lines或Insert newline without entering insert mode
答案 3 :(得分:-1)
dd在一个空行上,p为了恢复它,然后p在你想要空白行的地方