所以我可以使用 d d (正常模式)删除文本+行,并且所有下面的文本向上移动一行。
我可以使用 Ctrl + v
进入视觉模式如果我再说0
> C+v
> jjj
> $
> d
删除了4行文本,但不删除这些行。
如何删除文本块并同时删除这些行,以便前面的任何文本行向上移动到光标?
答案 0 :(得分:18)
对于这样的事情,我通常使用 shift + v , j j j ... d ,但您也可以使用文本对象删除
见:h text-object
。几个例子:
di"
- 在"
内删除
dap
- 删除段落
您当然可以使用除d
之外的其他命令,例如c
或v
。
我一直使用的是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