vim automation ex命令


1

是的,我知道,我可以使用sed。但我们假设我是某种病态的。如果你愿意,那就是受虐狂......

我有一个文件/tmp/a.script,包含:

%s_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g
%s_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g
%s_"csv\.php[^"]*\([0-9]\)_"\1.csv_g
%s_"xml\.php[^"]*\([0-9]\)_"\1.xml_g

(我从我的vim历史中咆哮他们)

我非常希望vim对文件执行这些命令,比如说example.html

但是,我无法弄清楚如何对该文件执行此脚本。

我知道-c命令行参数。但它只执行一个命令,我想执行所有这些命令。

有任何想法吗?

答案如下,作为参考,一个快速的方法来做到这一点:

for i in *.html ; do
  sed -i'' -e 's_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g'  $i
  sed -i'' -e 's_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g' $i
  sed -i'' -e 's_"csv\.php[^"]*\([0-9]\)_"\1.csv_g' $i
  sed -i'' -e 's_"xml\.php[^"]*\([0-9]\)_"\1.xml_g' $i
  echo $i
done

关于sed示例的注释:1)-i''相当于-i由于Bash处理引用的方式; 2)您可以-e多次给出,或s///用分号分隔命令,以避免多个sed调用; 3)你可以*.html直接给sed。
grawity

引用,我养成了这样做的习惯,我正在运行ZSH,之前我可能已经有了一些有趣的行为。你对sed的评论是有意义的,我会这样做,但想要一个更容易理解的例子。不是每个人都是grawity忍者!
布莱恩·亨特

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.