【问题标题】:How can I do a search and replace across files in all subdirectories using vi?如何使用 vi 对所有子目录中的文件进行搜索和替换?
【发布时间】:2019-07-11 09:45:10
【问题描述】:

vi 编辑器中,我了解以下行会搜索和替换文件中的所有匹配项:

:%s/search_string/replacement_string/g

如何在所有子目录(整个文件夹树)中的所有文件中搜索字符串并在所有这些文件中进行替换(出现搜索字符串)?

【问题讨论】:

    标签: vi


    【解决方案1】:

    我更喜欢在 vim 之外使用 sed:

    find . -type f -name "*" | xargs sed -i "s/search_string/replacement_string/g"
    

    将在当前目录及其下的所有文件中用replacement_string 替换所有search_string 实例。

    OSX(BSD sed):

    find . -type f -name "*" | xargs sed -i '' "s/search_string/replacement_string/g"
    

    注意多余的空字符串 arg sed -i '' "s/...

    奖励:我经常发现在所有文件中以交互方式搜索/替换(每次替换时使用 y/n 提示)很有用。 Vim 处理得很好:

    for filename in $(find . -type f -name "*"); do vim -c "%s/search_string/replacement_string/gc" -c "wq" "${filename}"; done
    

    感谢所有过去回答过这个问题并帮助我进行无数重构的人。 Search and replace in Vim across all the project files

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 2013-04-21
      • 2017-03-03
      • 1970-01-01
      相关资源
      最近更新 更多