如何在vim中剪切整行并粘贴?

264

我知道如何在vim中使用v命令,但我需要一种可以删除整行的命令,并且可以将同一行粘贴到其他地方的方式。


1
你应该更新你接受的答案。它没有告诉你如何粘贴... - Kellen Stuart
要将一行从第10行移动到第20行,请使用以下命令::10m 20 - peterretief
10个回答

498

dd 在命令模式下(按下 Esc 后)将剪切该行,p 在命令模式下将粘贴。

更新:

奖励部分,d 然后跟随一次移动,将剪切相应的内容,所以 dw 将剪切一个单词,d<down-arrow> 将剪切此行和下一行,d50w 将剪切50个单词。

yy 是复制整行,在使用上与 dd 相似。

D 剪切从光标到行末的所有内容。

如果您使用过 v(可视化模式),那么您可以尝试一下 V(可视化行模式)和 <ctrl>v(可视化块模式)。


15
好的回答。我会补充说,在命令模式下,可以使用 P 将光标前的行粘贴到当前行的前面。在插入模式下,可以使用 <Ctrl-R>" 粘贴该行。 - Birei
14
要粘贴时,可以使用]p 命令以正确的缩进方式进行粘贴。但我们应该小心,不要在此处发布整个 Vim 手册 :)。 - DaedalusFall

99

按下 Shift+v 将选择整行文字,按下 d 将删除该行。

你也可以使用 dd,这不需要你进入可视模式。


40
你可以按下vv或dd键,它们等效且不会激活烦人的可视化模式。 - violet_white
16
"dd" 比 "shift + v" 更容易 -> "d" - Kellen Stuart
1
撤销呢?我在尝试编辑我的文档,但无法撤销。 - Abhishek saharn
30
翻译:关于粘贴呢? - a06e
7
@becko p表示在光标后粘贴,使用Shift + P则是在光标前粘贴。接受的回答很糟糕,不应该在评论中回答。 - Kellen Stuart
显示剩余2条评论

49

删除当前行并复制到剪贴板:

d + d


在光标后粘贴

p


在光标前粘贴

Shift + p


选择整行(我经常使用此功能)

Shift + v

然后使用jk分别向下或向上移动


本质上,d + d 相当于先使用 Shift + v 然后再按d


1
按下 SHIFT + P 键会在光标所在的位置之前还是之后插入当前行? - Bernhard Döbler
@BernhardDöbler,我已更新我的答案以回答你的问题。Shift + p 将在光标前粘贴。这些天我发现自己更经常使用纯p - Kellen Stuart

16

假设你想要将行 bbb 剪切并粘贴到行--- 下面。

之前:

aaa
bbb
---

之后:

aaa
---
bbb
  1. 把光标放在行bbb上。
  2. 按下d+d.
  3. 把光标放在行---上。
  4. 按下p

输入图像描述


你是怎么制作那个视频的?那只是一个 .gif 吗? - Kellen Stuart
1
@KolobCanyon 这是一个使用 LICEcap 制作的动画 GIF - https://www.cockos.com/licecap/ - customcommander

16

有几种方法可以剪切一行,所有操作都受正常模式下 d 键的控制。如果您正在使用视觉模式(v 键),则可以在突出显示所需剪切区域后只需按下 d 键即可完成剪切。移动到要粘贴的位置,然后按下 p 键进行粘贴。

值得一提的是,您也可以从寄存器中复制 / 剪切 / 粘贴。假设您不确定何时或何处需要粘贴文本。您可以将文本保存在由字母标识的最多 24 个寄存器中之一中。只需在命令前加上单引号 (') 和寄存器字母 (a 到 z) 即可。例如,您可以使用视觉模式 (v 键) 选择一些文本,然后键入 'ad 剪切文本并将其存储在寄存器 'a' 中。一旦导航到要粘贴文本的位置,就可以键入 'ap 来粘贴寄存器 a 的内容。


13

我发现最快捷的方法是通过编辑模式:

  1. 按下yy复制该行。
  2. 然后dd删除该行。
  3. 然后p粘贴该行。

在光标所在的位置,p 是插入在当前行之前还是之后? - Bernhard Döbler
它会在光标所在的行后粘贴。 - Vadoff

11
  1. 在普通模式下按 'V' 选择整行
  2. 接着按 'y' 复制文本
  3. 移动光标到粘贴的位置,然后按 'p' 在光标后面粘贴或按 'P' 在光标前面粘贴。

7

6

只需三个步骤。


  1. 进入文本开头,按下v
  2. 进入文本结尾,按下d
  3. 移动光标到粘贴位置,按下p


0
  1. 前往该行,首先按下 esc,然后按下 Shift + v

(这将会突出显示该行)

  1. 按下 d

(该行现在已被删除)

  1. 前往您想要粘贴该行的位置,然后按下 p

简而言之,

Esc -> Shift + v -> d -> p


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接