Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 插入空行而不进入插入模式_Vim - Fatal编程技术网

Vim 插入空行而不进入插入模式

Vim 插入空行而不进入插入模式,vim,Vim,我经常发现自己在o或o和ctrl{上跳跃,以插入空行并退出插入模式 考虑到必须有一种更简单的方法,并希望保留光标位置,我将这些杂乱的宏拼凑在一起: map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR>

我经常发现自己在o或o和ctrl{上跳跃,以插入空行并退出插入模式

考虑到必须有一种更简单的方法,并希望保留光标位置,我将这些杂乱的宏拼凑在一起:

map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR>
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR>
map O:let cursorpos=getpos(“.”):i:let cursorpos[1]=cursorpos[1]+1:call setpos(“.”,cursorpos)
映射o:let cursorpos=getpos(“.”):a:call setpos(“.”,cursorpos)
但是,这不允许范围。如果能够在我当前行的上方5\O并获得5个空格,那就太好了


关于如何修复此问题以允许范围并在完成后仍返回到原始光标位置,有何建议?

您可以使用
:调用append(linenumber,repeat(['],5))
。它不会移动光标。

该插件添加了您想要的映射。您可以使用
[
,或在光标下方使用
]
。这两个映射都可以在前面加上一个计数。

我将其添加到我的.vimrc中

"create new line below current line without leaving normal mode or moving cursor
noremap - m`o<Esc>``
"create new line above current line without leaving normal mode or moving cursor
noremap _ m`O<Esc>``
“在当前行下方创建新行,无需离开正常模式或移动光标
诺雷马克-莫``
“在当前行上方创建新行,而不离开正常模式或移动光标
诺雷马克``
出于以下几个原因,我更喜欢此解决方案:

  • 我通常不在正常模式下使用-或u键,它们位于我键盘上的同一物理键上
  • 安装一个插件似乎有点过头了。我避免为简单的事情下载插件,因为它们会给我的环境引入新的代码,我还不完全理解或信任这些代码,这可能会干扰其他定制或插件
  • 我尝试了这个问题的作者在他评论中给出的答案,但是在使用了这个答案之后,.command做了一些奇怪和令人不安的事情
  • 我通常更喜欢按。多次传递数字参数,这样我就不用坐在那里用手指数东西,而是一直按。直到看起来正确为止(概念上的可视化程度较低,视觉上更真实)。不幸的是,即使是此解决方案也无法按照我希望的方式使用.command。但是,通过映射-和u,可以重复按这些按钮以获得相同的效果。遗憾的是,它没有靠近主行

警告:标记`键会影响跳转列表。如果这能让你感到愉快,你可以使用任何其他标记+++/p>很好,这很完美。我想必须有更优雅的方法。将其切换为:映射O:call append(line(“.”-1,repeat([”),v:count1))映射O:call append(line(“.”,repeat([”),v:count1))响应范围。谢谢!但在本例中,如果我们应用“计数版本”,它也会上/下移动光标。@user3663882。我们需要将
:call
替换为
:call
并将5替换为
v:count1
。或者保留5并用
启动命令以清除计数。