如何在Vim中有条件地编辑文件

用户名

我需要根据其内容使用vim批量编辑一堆文件。最简单的示例是,我想对文件执行一系列的替换操作,但前提是文件的第一行与特定模式匹配。

我正在尝试做这种事情:

vim -e -s $file < changes.vim

我应该补充一点,我无法使用sed和awk之类的工具,而是想在vim中执行整个操作。

弗洛里斯

我建议您找到所需文件的列表,并将该列表传递到所需的命令中。为此,将awk组合使用xargs似乎很有用。您可能可以做一些更聪明的简短事情……

awk 'FNR>1 {nextfile} /pattern/ { print FILENAME ; nextfile }' filePattern | xargs -I{} vim -e -s {} < changes.vim

在上面,filePattern给出您想要的所有文件(也许是*.c),/pattern/是您要查找的匹配项的正则表达式。xargs将“每次输出一个”,并将其替换为我放置的位置的以下命令{}

我想为此链接打个招呼,从中找到了这个答案的灵感。

仅Vim解决方案

编辑-在我发布此内容后,您说您需要“仅vim”解决方案。这里是…

第1步:conditionalEdits.vim在开始时创建带有以下几行文件:

let line_num = search('searchExpression')  " any regex 
if line_num == 1                           " first line matched
  center                                   " put your editing commands here...
  update                                   " save changes
endif
quit

当然,您不仅希望将第一行居中,还希望将所有编辑命令放入if语句中。

现在,您可以使用

vim -c '/path/to/my/conditionalEdits.vim' -s filePattern

其中,filePattern匹配的所有文件,你可能有兴趣(但你肯定知道你已经看过1号线内后...)

显然,您可以按照通常的方式浏览文件并查找与您的内容匹配的内容/样式-但这是基本思想。

有用的链接:http : //www.ibm.com/developerworks/library/l-vim-script-1/http://learnvimscriptthehardway.stevelosh.com

强烈建议您在一个单独的目录中执行此操作,首先使用几个文件的副本,以确保此操作确实如您所愿。我不想对一堆文件被覆盖负责(您要备份,对吗?)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在熊猫中有条件地从不同的列中进行选择

来自分类Dev

如何在R中的数据框中有条件地选择列

来自分类Dev

如何在Django Admin 1.5中有条件地否决删除尝试?

来自分类Dev

如何在有条件的js中有条件地应用标题

来自分类Dev

如何在Vim中有条件地绑定键来执行两个不同的操作?

来自分类Dev

如何在Oracle Merge Update中有条件地设置X = Y?

来自分类Dev

如何在Ionics中有条件地隐藏和显示选项卡?

来自分类Dev

如何在AngularJS中有条件地设置所选属性

来自分类Dev

如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

来自分类Dev

如何在函数链接中有条件地调用函数?

来自分类Dev

如何在Spring Data REST投影中有条件地公开数据?

来自分类Dev

如何在PrimeFaces中有条件地隐藏/显示或启用/禁用菜单项?

来自分类Dev

如何在C中有条件地编译main()?

来自分类Dev

如何在angularJS指令中有条件地应用属性?

来自分类Dev

如何在asp.net MVC视图中有条件地设置模型?

来自分类Dev

如何在Aurelia repeat.for中有条件地添加或删除CSS类?

来自分类Dev

如何在Swift中有条件地为tvOS编译

来自分类Dev

如何在AngularJS中有条件地应用指令?

来自分类Dev

如何在AngularJS模板中有条件地显示跨度?

来自分类Dev

如何在一行中有条件地设置变量值?

来自分类Dev

如何在React Native Component中有条件地包含图像?

来自分类Dev

如何在Visual Studio 2019中有条件地编译c ++源文件?

来自分类Dev

如何在Angular中有条件地渲染?

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何在Vim中有条件地编辑文件

来自分类Dev

如何使用AngularJS在HTML文件中有条件地插入字符串?

来自分类Dev

如何在Excel中有条件地匹配

来自分类Dev

如何在Excel中有条件地VLOOKUP?

来自分类Dev

如何在systemd config中有条件地运行其他文件?

Related 相关文章

  1. 1

    如何在熊猫中有条件地从不同的列中进行选择

  2. 2

    如何在R中的数据框中有条件地选择列

  3. 3

    如何在Django Admin 1.5中有条件地否决删除尝试?

  4. 4

    如何在有条件的js中有条件地应用标题

  5. 5

    如何在Vim中有条件地绑定键来执行两个不同的操作?

  6. 6

    如何在Oracle Merge Update中有条件地设置X = Y?

  7. 7

    如何在Ionics中有条件地隐藏和显示选项卡?

  8. 8

    如何在AngularJS中有条件地设置所选属性

  9. 9

    如何在Meteor 1.0中有条件地加载/捆绑CSS文件?

  10. 10

    如何在函数链接中有条件地调用函数?

  11. 11

    如何在Spring Data REST投影中有条件地公开数据?

  12. 12

    如何在PrimeFaces中有条件地隐藏/显示或启用/禁用菜单项?

  13. 13

    如何在C中有条件地编译main()?

  14. 14

    如何在angularJS指令中有条件地应用属性?

  15. 15

    如何在asp.net MVC视图中有条件地设置模型?

  16. 16

    如何在Aurelia repeat.for中有条件地添加或删除CSS类?

  17. 17

    如何在Swift中有条件地为tvOS编译

  18. 18

    如何在AngularJS中有条件地应用指令?

  19. 19

    如何在AngularJS模板中有条件地显示跨度?

  20. 20

    如何在一行中有条件地设置变量值?

  21. 21

    如何在React Native Component中有条件地包含图像?

  22. 22

    如何在Visual Studio 2019中有条件地编译c ++源文件?

  23. 23

    如何在Angular中有条件地渲染?

  24. 24

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  25. 25

    如何在Vim中有条件地编辑文件

  26. 26

    如何使用AngularJS在HTML文件中有条件地插入字符串?

  27. 27

    如何在Excel中有条件地匹配

  28. 28

    如何在Excel中有条件地VLOOKUP?

  29. 29

    如何在systemd config中有条件地运行其他文件?

热门标签

归档