vim:搜索并替换以特定字符串开头的行

kar*_*tik 2 regex vim

我想替换文件中的特定单词,这个单词出现在很多地方,我有兴趣在行开头或有特定单词时替换它.例如(忽略语法)

All roads lead to Rome.
Be Roman in Rome.
Where are these roads in Rome.
Run Code Online (Sandbox Code Playgroud)

我正在尝试做一些像%s/roads.*Rome/roads.*Italy 包含道路的所有线路和罗马应该将罗马这个词改为意大利.第二行应该没有改变.

dev*_*ull 5

使用反向引用:

%s/\(roads.*\)Rome/\1Italy/
Run Code Online (Sandbox Code Playgroud)

或者,说:

g/roads/s/Rome/Italy
Run Code Online (Sandbox Code Playgroud)

(即匹配包含roads和替换Rome的行Italy.此方法不依赖于单词出现在行中的顺序.)

  • 你也可以使用`\ zs`.例如,`%s/roads.*\zsRome/Italy/g` (2认同)