所以我可以使用(正常模式)删除一个文本+行dd,下面的所有文本都向上移动一行。
Ctrl我可以使用+进入可视模式v
如果我然后说做0
> C+v
> jjj
> $
> d
4 行的文本被删除但行没有被删除。
如何删除文本块并同时删除行,以便任何前面的文本行向上移动到光标?
所以我可以使用(正常模式)删除一个文本+行dd,下面的所有文本都向上移动一行。
Ctrl我可以使用+进入可视模式v
如果我然后说做0
> C+v
> jjj
> $
> d
4 行的文本被删除但行没有被删除。
如何删除文本块并同时删除行,以便任何前面的文本行向上移动到光标?
对于这样的事情,我通常使用shift+v, jjj... d,但您也可以使用文本对象进行删除。
见:h text-object
。几个例子:
di"
- 删除内部"
dap
- 删除段落周围
当然,您也可以使用除 之外的其他命令d
,例如c
or v
。
我一直使用的东西是ci(
andci"
用于编辑()
和""
.
可以在这里找到更多使用文本对象和可视模式的酷示例:使用
Vim 最高效的快捷方式是什么?
您也可以使用,即4dd
FDinoff 提到的,或 Jens 提到的范围。但是在大多数情况下,我个人认为使用视觉线 ( shift+v) 更灵活,您不必计算线或任何东西。这很容易记住,您会立即看到结果,不会错过计数行,即使您位于屏幕的顶部/底部,它也会起作用。
使用任4dd
一删除 4 行文本。
或者
使用逐行视觉块。<S-v>
然后移动到要删除的最后一行,然后按d
如果块真的很大,并且您懒得计算要删除的行数,但是您知道第一行和最后一行的编号(:set number
帮助),您可以随时进入 ex 模式并
:3,1415d
从第 3 行到第 1415 行删除。
<C-v>
让您进入“视觉块模式”。在该模式下,您对一个矩形(“可视块模式”中的“块”)进行操作,该矩形可能会或可能不会覆盖您要删除的线条。d
仅作用于该块中包含的字符,使行保持原样。
您想要的是“视觉线模式”,您可以在其中专门针对线条进行操作。在普通模式或任何其他视觉模式下,点击V
(Shift + v),移动光标以定义您的选择,然后点击d
。
删除 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
或者d with motion
例如
d3j
命令也:d
很灵活。查看帮助以获取详细信息
您可以使用书签。用书签标记第一行,例如,'e' 在命令模式下(如果在 INSERT 模式下,请按 ESC)按
m e
用书签“e”标记第一行。
然后转到您要删除的最后一行并将其添加为书签,并说“f”
m f
然后您可以转到 ex 模式(使用冒号)并删除这些行
:'e,'f d