当我按v
剪切并粘贴到VIM中,然后使用$
转到该行的末尾,然后按d
,下一行会移到同一行我正在切割。
如何阻止此事?
答案 0 :(得分:8)
它向上移动是因为您删除了所有字符,包括换行符/ Feed。
Vim有多种解决方案。没有“一种真实的方式”,但您可以尝试以下命令。
您可以在正常模式下使用D
(大写),这将删除所有内容直到行尾。
请参阅:help D
使用其他动作
你可以做什么而不是使用 $ 移动到行尾,使用 g _ 。它将移动到该行的最后一个非空白字符,并且不会选择行返回。
请参阅:help g_
所以 v g _ d 应该可以正常工作。
使用替换
或者,你可以做什么而不是切割,你可以使用空格字符用空格替换已删除的字符。
所以 v $ r SPACE 应该可以擦除,但不会将已替换的字符保存在寄存器中(例如,稍后粘贴)。
答案 1 :(得分:1)
要剪切从当前光标位置到结束的所有内容,请使用 C 。
:he C
会帮助您:
从光标位置删除到结尾 line和[count] -1 more lines [into register x],and 开始插入。 c $(不是linewise |)的同义词。
这样做会导致当前行(假设您在点击 C 时位于行的开头)变为空,并且内容(默认情况下)被拉入寄存器"
编辑: 正如Xavier在他的评论(以及他的answer)中所指出的那样,D可以实现同样的目的。它还会切割从当前光标位置到行尾的所有内容,但在执行此操作后不会进入插入模式。
答案 2 :(得分:0)
如果您使用这些击键序列,则下一行不会向上移动。
v $ h d
它正在向上移动,因为EOL字符$
也会在不移动光标1字符的情况下被删除。
答案 3 :(得分:0)
跳过视觉模式并交换其他两个命令,即。按d
$
。
这比你的起始时间要短,并且不会打破你传统的介绍你可能不熟悉的其他击键。