删除Vim中的文本块

时间:2013-05-23 19:06:05

标签: vim

所以我可以使用 d d (正常模式)删除文本+行,并且所有下面的文本向上移动一行。

我可以使用 Ctrl + v

进入视觉模式

如果我再说0> C+v> jjj> $> d删除了4行文本,但不删除这些行。

如何删除文本块并同时删除这些行,以便前面的任何文本行向上移动到光标?

7 个答案:

答案 0 :(得分:18)

对于这样的事情,我通常使用 shift + v j j j ... d ,但您也可以使用文本对象删除 见:h text-object。几个例子:

di" - 在"内删除 dap - 删除段落

您当然可以使用除d之外的其他命令,例如cv。 我一直使用的是ci(ci",用于编辑()""内的内容。

使用文本对象和可视模式的更酷的例子可以在这里找到:
What is your most productive shortcut with Vim?


您也可以使用,例如FDinoff提到的4dd,或Jens提到的范围。然而,在大多数情况下,我个人认为使用视线( shift + v )更灵活,您不必计算线条或任何东西。这很容易记住,你会立即看到结果,你不会错过计数线,即使你在屏幕的顶部/底部也能正常工作。

答案 1 :(得分:12)

使用4dd删除4行文字。

或者

使用linewise visual block。 <S-v>然后移至您要删除的最后一行,然后按d

答案 2 :(得分:7)

如果该块非常大,并且您无法计算要删除的行数,但您知道第一行和最后一行号(:set number有帮助),您可以随时前往模式和

 :3,1415d

从第3行到第1415行删除。

答案 3 :(得分:6)

<C-v>让您进入“视觉模式”。在该模式下,您将操作一个矩形(“视觉块模式”中的“块”),该矩形可能会也可能不会覆盖您要删除的行。 d仅对该块中包含的字符起作用,将行保留为原样。

你想要的是“视线模式”,你专门在线上行动。在正常模式或任何其他视觉模式下,点击V(Shift + v),移动光标定义您的选择,然后点击d

答案 4 :(得分:3)

从光标所在的行开始删除4行文本:

4dd

或使用ex命令d和行寻址,例如:

:3,24d 

将删除第3-24行。

在使用ex:

的行寻址时,这里有一些有用的特殊字符
 .       : current line
 $       : last line
 /text/  : next occurrence of text
 ?text?  : previous occurrence of text
 *       : all text currently on screen
 %       : entire file
 +n      : next n lines
 -n      : previous n lines

答案 5 :(得分:1)

d with motion例如

d3j

:d命令也很灵活。查看帮助以获取详细信息

答案 6 :(得分:0)

您可以使用书签。用书签标记第一行,说“ e” 在命令模式下(如果在INSERT模式下,请按ESC)按

m e 

用书签“ e”标记第一行。

然后转到您要删除的最后一行 并用“ f”添加书签

m f

然后您可以转到ex模式(使用冒号)并删除行

:'e,'f d