从光标向后删除到Vim中前一行的末尾?

时间:2015-05-27 20:12:06

标签: vim vi

说我想编辑以下行:

var myVar = 
    "I am a string!";

所以它看起来像这样:

var myVar = "I am a string!";

是否有一个移动到前一行的末尾?

2 个答案:

答案 0 :(得分:13)

你想要的是行连接命令, J

在普通模式下,将光标放在var myVar =行的任意位置,然后键入 J (大写j)。

方向运动使用 J - 5 J 缩进光标下方5行等。您还可以选择范围使用可视模式( v 开始视觉模式选择)并使用 J 将它们全部合并为一个。

&joinspaces选项也会影响此行为。当它" on"在连接线时,在句子结束标记后面添加两个空格。 set nojoinspaces将其关闭并仅插入一个空格。

答案 1 :(得分:0)

kJ会做您想做的事情,可能就是您应该使用的内容,但是如果您想完全按照您的要求进行操作从光标向后删除到之前的结尾行然后您可以执行以下操作:

:set virtualedit+=onemore
^  " go to the start of the line
d?$<cr>

?$<cr>是一个移动到前一行的末尾。 :set virtualedit+=onemore允许光标移动到线的末尾,如果没有,我们最终会删除该行的最后一个字符,在您给出的示例中,该字符将是尾随空格。

然后您可以创建一个映射来执行此操作(:nohl只清除搜索突出显示):

:nnoremap <leader>J ^d?$<cr>:nohl<cr>

虽然更简单的映射可以实现相同的目标:

:nnoremap <leader>J kJ