如何使用vi在所有子目录中的文件中搜索和替换?

时间:2019-07-11 09:45:10

标签: vi

vi编辑器中,我了解以下行会搜索并替换文件中所有出现的内容:

:%s/search_string/replacement_string/g

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

1 个答案:

答案 0 :(得分:0)

我更喜欢使用sed在vim之外执行此操作:

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

在当前目录下及其下的所有文件中,将search_string的所有实例替换为replacement_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