在特定行中search和replacevim
我可以用
:5,12s/foo/bar/g  searchfoo并将其replace为第5行和第12行之间的bar 。我怎样才能在第5行和第12行(而不是在第二行)之间做到这一点? 
Vim有特定的正则expression式primefaces,它们在某些行,列等中匹配。 你可以使用它们(可能除了范围)来限制匹配:
 :5,12s/\(\%5l\|\%12l\)foo/bar/g 
 请参阅:help /\%l 
您可以在第5行进行replace,并在第12行上尽可能less地重复:
 :5s/foo/bar :12& 
 正如Ingo所指出的:&忘记你的旗帜。 由于您使用的是/g ,所以正确的命令是:&& : 
 :5s/foo/bar/g :12&& 
 请参阅:help :&和朋友。 
 你总是可以添加一个c到最后。 这将要求确认每场比赛。 
 :5,12s/foo/bar/gc 
有趣的问题。 似乎只有范围select,没有多行select:
http://vim.wikia.com/wiki/Ranges
 但是,如果你在第5行和第12行有特别的东西,你可以使用:g运算符。 如果你的文件看起来像这样(数字仅供参考): 
  1 line one 2 line one 3 line one 4 line one 5 enil one 6 line one 7 line one 8 line one 9 line one 10 line one 11 line one 12 enil one 
 而你想在enil而不是line的enil line代替eno : 
 :g/enil/s/one/eno/ 
 你可以使用ed – 一个面向行的文本编辑器,它具有与vi和vim类似的命令。 它可能早于vi和vim。 
在一个脚本中(使用一个处理input到EndCommand标记的here文件),它看起来像:
 ed file <<EndCommands 5 s/foo/bar/g 7 s/foo/bar/g wq EndCommands 
显然,ed命令也可以在命令行上使用。