文本编辑时要经常选中一行或多行,vi提供了在末行模式下的定位命令,
常用如下:
命令 操作说明
n1,n2 表示n1到n2行. 表示当前光标所在行
$ 表示指定文件的最后一行
% 表示整个文件
+n 从当前行开始向后n行
-n 从当前行开始向前n行
2、全局命令
格式: [addr] g/字符串/命令
此命令格式表示让系统在范围addr中搜寻能够匹配“字符串”的行,然后使用后面的命令对行进行“命令”操作。
常用命令一般有,p(显示)、g(替换)、d(删除)的等。
其中:[addr]表示定位命令和检索的范围,省略时表示使用当前行。
例如:“1,20” ---从第1行到第20行;
“%” ---表示整个文件;
“.,$” ---表示从当前行到文件尾。
3、替换命令
格式: [addr] s/源字符串/目的字符串/[option]
(1)上述格式中“s”表示其后要进行字符串的替换操作;
(2)对于option选项,它表示对字符串操作的类型,省略option
表示仅对每行第一个匹配串进行替换;
option:
g ---对全局的字符串进行替换;
c ---对全局要替换的字符串进行确认;
p ---表示将替换的结果逐行显示(使用Ctrl + L可恢复)
常见的全局命令和全局替换命令如下表示:
g/字符串/p 显示所有带有“字符串”的行
g!/字符串/p 显示所有不带有“字符串”的行
n1,n2 g/字符串/p 显示从n1到n2的含有“字符串”的行
g/字符串/d 删除有“字符串”的行
g!/字符串/d 删除有“字符串”的行
g/字符串1/s//字符串2/ 用“字符串2”全文替换“字符串1”,但每行只替换第一个匹配的字符串
g/字符串1/s//字符串2/g 用“字符串2”全文替换“字符串1”(此命令可用下面蓝色字体命令取代)
s/字符串1/字符串2/ 用“字符串2”替换当前行第一个“字符串1”
s/字符串1/字符串2/g 用“字符串2”替换当前行所有“字符串1”
%s/字符串1/字符串2 用“字符串2”替换全文替换“字符串1”,但只替换第一个匹配的
%s/字符串1/字符串2/g 用“字符串2”全文替换“字符串1”
g/字符串1/s/字符串2/字符串3/g 表示在所有包含“字符串1”的行中,把“字符串2”用“字符串3”来替换