在Vim中剪切并粘贴而不移动下一行

时间:2011-09-06 08:34:48

标签: vim

当我按v剪切并粘贴到VIM中,然后使用$转到该行的末尾,然后按d,下一行会移到同一行我正在切割。

如何阻止此事?

4 个答案:

答案 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 $

这比你的起始时间要短,并且不会打破你传统的介绍你可能不熟悉的其他击键。