如何让VIM将dd映射到c-bs

时间:2013-12-03 16:04:39

标签: vim

我尝试了大约100种组合:inoremap和:imap等,但我找不到一个允许我重新映射以删除当前行并将光标留在向上移动的线上,即视觉上,光标不动。

我更喜欢在输入,替换和普通模式下工作。如果它涵盖了所有/大多数模式,那就最好。

有人可以告诉我该怎么做吗?

2 个答案:

答案 0 :(得分:0)

你需要set ve=all以确保光标停留在同一行,删除后保持相同的col。因为已删除行下方的行可能比您要删除的行短,例如

foooooooo[I]oooo
bar

[I]是光标,如果按dd,此处光标将不会转到同一列,因为bar行短于fooo..行。如果你set ve=all,你的光标可以放在缓冲区的任何区域。

然后你可以在dd之前保存col并在dd之后恢复它。像:

:let c=col('.') |exec 'norm! dd'.c.'|'  

没有set ve=all,如果你的光标列没有超过下面一行的长度,上面的命令也可以。但如果超过,光标将位于“下方”行的末尾。

我希望我理解你。

答案 1 :(得分:0)

请参阅this question中的已接受答案,了解我为什么无法重新映射Ctrl-BackSpace。