如何删除vim中当前行下面的行?

Val*_*yev 66 vim

是否有命令删除紧靠当前行下方的一行(或几行)?目前我这样做: jdd然后.根据需要重复.是否有一个将所有这些结合起来的命令?

更新:我希望有这样的命令的原因是我不想离开当前位置,但能够删除下面的行.

Pet*_*ker 142

delete ex命令可以很好地工作.

:+,$d
Run Code Online (Sandbox Code Playgroud)

这将删除当前+1到结尾的所有行($)

要删除接下来的2行,可以使用以下范围+1,+2或速记+,+2

:+,+2d
Run Code Online (Sandbox Code Playgroud)

正如@ib提到的那样,:deleteor :d命令会将光标移动到已删除文本旁边的行的开头.(即使nostartofline有一套).为了解决这个问题,我们可以发出``正常模式命令.``将跳回到最后一次跳转之前的确切位置,在这种情况下是:d命令.我们的命令现在

:+,+2denter``

或者作为一个前命令

:+,+2d|norm! ``
Run Code Online (Sandbox Code Playgroud)

为了使这更容易,我们将这一切包装在一个命令中:

command! -count=1 -register D :+,+<count>d <reg><bar>norm! ``
Run Code Online (Sandbox Code Playgroud)

现在删除以下3行:

:3D
Run Code Online (Sandbox Code Playgroud)

该命令还可以采取{reg}:delete:yank做.因此,将接下来的4行删除到寄存器a中将是:

:4D a
Run Code Online (Sandbox Code Playgroud)

欲获得更多信息

:h :d
:h :command
:h :command-register
:h :command-count
:h ``
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是一个相当简单的解决方案,可以"开箱即用",并且可以推广到其他命令(例如,`:+ 1,+ 5s!a!b!g`将在4行后用b替换a'光标).请参阅:help命令范围以获取更多示例. (3认同)

小智 67

dG应该管用.
这意味着删除所有行,直到当前光标的文件末尾.


Clo*_*dID 26

这将删除当前行之下的所有行:

jdG
Run Code Online (Sandbox Code Playgroud)

不幸的是,在删除后会将光标移动到当前行的开头.

  • 并且将删除每一行直到缓冲区的末尾. (2认同)

xaa*_*xaa 7

好吧,只需你可以使用xxdd命令.大多数时候我都知道(至少有一个想法)我正在编辑的脚本的大小.所以,下面的命令通常绰绰有余:

  • 99dd
  • 999dd从光标位置开始删除999行.
  • 9999dd
  • 99999dd用于很长的脚本;)