从光标向后删除到 Vim 中上一行的末尾?
Delete backwards from cursor to the end of the previous line in Vim?
假设我要编辑以下行:
var myVar =
"I am a string!";
所以它看起来像这样:
var myVar = "I am a string!";
是否有移动到上一行的末尾?
你想要的是行连接命令,J。
在正常模式下,将光标放在 var myVar =
行的任意位置并键入 J(大写 j)。
方向运动与 J 一起工作 - 5J 在下面缩进 5 行光标等。您还可以使用视觉模式 select 一系列行(v 以启动视觉模式 selection)并使用 J.
&joinspaces
选项也会影响此行为。当它“打开”(set joinspaces
或 set js
)时,它会在加入时在句末标记(即“.”、“?”或“!”)后添加两个 space线。 set nojoinspaces
或 set nojs
将其关闭并仅插入一个 space.
kJ
会做你想做的,而且可能是你应该使用的,但是如果你想做你所要求的 从光标向后删除到上一行 然后你可以执行以下操作:
:set virtualedit+=onemore
^ " go to the start of the line
d?$<cr>
?$<cr>
是移动到上一行的末尾。
:set virtualedit+=onemore
允许光标移动到行尾,否则我们将最终删除该行的最后一个字符,在您给出的示例中,该字符将是结尾的 space.
然后您可以创建一个映射来执行此操作(:nohl 只是清除搜索突出显示):
:nnoremap <leader>J ^d?$<cr>:nohl<cr>
尽管实现相同目的的更简单的映射是:
:nnoremap <leader>J kJ
假设我要编辑以下行:
var myVar =
"I am a string!";
所以它看起来像这样:
var myVar = "I am a string!";
是否有移动到上一行的末尾?
你想要的是行连接命令,J。
在正常模式下,将光标放在 var myVar =
行的任意位置并键入 J(大写 j)。
方向运动与 J 一起工作 - 5J 在下面缩进 5 行光标等。您还可以使用视觉模式 select 一系列行(v 以启动视觉模式 selection)并使用 J.
&joinspaces
选项也会影响此行为。当它“打开”(set joinspaces
或 set js
)时,它会在加入时在句末标记(即“.”、“?”或“!”)后添加两个 space线。 set nojoinspaces
或 set nojs
将其关闭并仅插入一个 space.
kJ
会做你想做的,而且可能是你应该使用的,但是如果你想做你所要求的 从光标向后删除到上一行 然后你可以执行以下操作:
:set virtualedit+=onemore
^ " go to the start of the line
d?$<cr>
?$<cr>
是移动到上一行的末尾。
:set virtualedit+=onemore
允许光标移动到行尾,否则我们将最终删除该行的最后一个字符,在您给出的示例中,该字符将是结尾的 space.
然后您可以创建一个映射来执行此操作(:nohl 只是清除搜索突出显示):
:nnoremap <leader>J ^d?$<cr>:nohl<cr>
尽管实现相同目的的更简单的映射是:
:nnoremap <leader>J kJ