2020年3月7日 星期六

vi 删除文本命令

从编辑缓冲删除文本的方法有若干种,您既可以使用vi命令,也可以使用ex命令。vi的命令如下所示:

x 删除当前光标处的字符

X 删除光标左边的字符

D 删除从当前光标到本行末尾的字符

dmove 删除从当前光标到move所给位置的字符

dd 删除当前行


另外,还有两个ex命令:

:lined 删除指定行

:line,lined 删除指定范围的行

无论使用那一条命令,都可以使用撤销命令uU撤销删除。

最简单的删除命令是x(小写字母“x”)。它删除当前光标位置处的字符。例如:假设您给父母写信,钙素它们您在学校的生活情况。编辑缓冲区的当前行包含:

I love heiQnous paWrties and avoid the library as a rule
您发现3个单词中又一个错误。您可以将光标移至“Q”处并键入:

x

现在当前行变为:

I love heinous parties and avoid the library as a rule
D(大写字母“D”)命令删除从当前光标位置到这一行末尾的所有字符。例如,假设您将光标移动到单词“library”之后的空格处,并键入:

D


当前行将变为:

I love heinous parties and avoid the library
下一条删除命令是d(小写字母“d”),后面跟一条光标移动命令。该命令将删除从当前光标位置到光标移动命令所指示位置的所有字符。这与前面讨论的c(change,改变)命令相似。下面举一个例子:

dw 删除一个单词

d10w 删除10个单词

d10W 伤处10个单词(忽略标点符号)

db 向后删除一个单词

d2) 删除两个句子

d5} 删除5个段落
提示:
d命令有两种特别有用的使用方法,第一,为了删除当前行到编辑缓冲区末尾的所有行,可以所有dG

第二,为了删除从当前行到编辑缓冲区的所有行,可以使用dgg或者d1G.


下面继续举例子,当前行仍然是:

I love heinous parties and avoid the library
假设当光标移动到单词“heinous”的开头,并通过键入下述命令删除4个单词:

d4w
现在当前行变为:

I love the library
最后一条vi删除命令是dd。该命令删除当前行。如果希望删除不止一行,可以在该命令前加上一个重复次数。例如为了删除一行,可以使用:

dd

为了删除10行,可以使用:

10dd

有时候,使用行号进行删除可能更方便些。此时,可以使用ex命令:d。为了使用:d命令,需要指定一个行号或者一个范围(两个行号,中间用一个逗号隔开)。例如,为了删除第50行,可以使用:

:50d

(提醒:为了显示行号,可以使用:set number;为了关闭行号的显示,可以使用:set nonumber。)

和其它ex命令一样,符号.(点号)代表当前行,$ (美元符号)代表编辑缓冲区的最后一行。因此,为了编辑缓冲区的第1行到当前行之间的所有行删除,可以使用:

:1,.d

这个与dggd1G命令拥有相同的结果。为了从当前行删除到编辑缓冲区的末尾,可以使用:

:.,$d

这与dG命令拥有相同的结果。为了删除整个编辑缓冲区,可以使用下述命令中的一个:

:1,$d
:%d

记住,%代表编辑缓冲区的所有行。

沒有留言:

張貼留言