总是记不住,特此记录一下。
vim
[range]s/s1/s2/ [option]
-
[range] 表示检索范围,省略时表示当前行。下面是一些检索范围的例子。
- 1,10表示从第 1 行到 10 行。
- %表示整个文件,同1, $
- . ,$从当前行到文件尾。
-
s 为替换命令
-
s1 要被替换的串,s2 为替换的串
-
option 表示选项:
- /g表示在全局文件中进行替换。
- /c表示在每次替换之前需要用户进行确认。
- 省略时仅对每行第一个匹配串进行替换。
下面实例演示了字符串替换命令,将第 10~22 行的 printf 标识符替换为 PRINT。
- 在 vi 编辑器中编辑以下代码:
int main(void)
{
struct stat buf; /*存储文件状态信息*/
if(stat("s1", &buf) == -1) {
perror ("fail to stat");
exit(1);
}
printf("permission : %d\n", buf.st_mode);
printf("inode number : %d\n", buf.st_ino);
printf("device number : %d\n", buf.st_dev);
printf("r-device number : %d\n", buf.st_rdev);
printf("link : %d\n", buf.st_nlink);
printf("uid : %d\n", buf.st_uid);
printf("gid : %d\n", buf.st_gid);
printf("file size : %d\n", buf.st_size);
printf("access time : %d\n", buf.st_atime);
printf("motify time : %d\n", buf.st_mtime);
printf("change time : %d\n", buf.st_ctime);
printf("buf size : %d\n", buf.st_blksize);
printf("block size : %d\n", buf.st_blocks);
return 0;
}
- 在末行模式下输入以下替换命令:
10,22s/printf/PRINT/g