将光标保持在vim中重复行的相同位置

时间:2014-07-12 10:32:58

标签: vim

我已经添加了这些快捷方式来复制基于:t命令的行,其中:t.将当前行复制到下一行(将光标保持在这对行中的第二行) ),:t-1将当前行复制到前一行(将光标保持在该对行的第一行)。

nmap <leader>D :t-1<cr>
nmap <leader>d :t.<cr>

在这两种情况下,命令都会将光标位置移动到已创建的行的开头。如何将光标保持在新线上的相同位置(例如,从线的起点开始20个字符)?

2 个答案:

答案 0 :(得分:2)

最简单的解决方案是使用

:set nostartofline

使ex命令尽可能保留光标列,请参阅h:nosol

答案 1 :(得分:1)

这是一个解决方案:

nmap <leader>D mayyp`a
nmap <leader>d mayyP`a

首先在当前光标位置放置一个名为ama)的标记,然后复制当前行(yy)并将其粘贴到下方(p )。之后,它返回到`a的原始光标位置。第二个映射使用P而不是p将该行粘贴到当前行之上。

这应该做你期望的事。