vim 替换:
s用于单行替换;$s可以指定范围进行替换;%S用于全局替换
对于指定范围的替换用$s ,全局的替换尽量用%s,%s 不能指定范围进行替换(即使指定了范围仍然进行全局的替换)
使用举例如下:
vim test.txt
nginx nginx dsd nginx
nginx jksdjk nginx
sdjks nginx nginx
进入末行模式
1)替换光标所在行的第一个nginx为TTT(光标在第一行)
:s/nginx/TTT
TTT nginx dsd nginx
nginx jksdjk nginx
sdjks nginx nginx
2)替换光标所在行的全部nginx为TTT(光标在第一行)
:s/nginx/TTT/g
TTT TTT dsd TTT
nginx jksdjk nginx
sdjks nginx nginx
3)替换光标所在行到末尾行的第一个nginx为TTT(光标在第二行)
:.,$s/nginx/TTT
nginx nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
4)替换光标所在行到末尾行的所有nginx为TTT(光标在第二行)
:.,$s/nginx/TTT/g
nginx nginx dsd nginx
TTT jksdjk TTT
sdjks TTT TTT
等价于::2,$s/nginx/TTT
nginx nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
5)替换所有行的第一个nginx为TTT
:%s/nginx/TTT
TTT nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx
6)替换所有行的所有nginx为TTT
:%s/nginx/TTT/g
TTT TTT dsd TTT
TTT jksdjk TTT
sdjks TTT TTT
%s 指定范围替换没有效果,仍然是全局替换:
举例:
:2,%s/nginx/TTT
TTT nginx dsd nginx
TTT jksdjk nginx
sdjks TTT nginx