如何在vim中组合:vim和:s
例如,我的任务是搜索当前目录下包含“foo”的所有文件,然后替换为“bar”。如何在vim中组合:vim和:s,vim,editor,Vim,Editor,例如,我的任务是搜索当前目录下包含“foo”的所有文件,然后替换为“bar”。 现在是我当前的解决方案: :vim/bar/*** 使用此选项搜索foo的所有外观,然后逐个替换为“bar” :s/foo/bar/gc 显然,当替代品变大时,这不是一个好的解决方案。因此,如果有更好的解决方案将这两个操作合并为一个。但是有一个先决条件:必须在替换之前给出提示,就像c在第二个命令中所做的那样。这是为了防止替换一些不需要替换的单词。在vim中打开所有文件: $ vim * 将foo替换为bar :ar
现在是我当前的解决方案:
:vim/bar/***
使用此选项搜索
foo
的所有外观,然后逐个替换为“bar”:s/foo/bar/gc
显然,当替代品变大时,这不是一个好的解决方案。因此,如果有更好的解决方案将这两个操作合并为一个。但是有一个先决条件:必须在替换之前给出提示,就像
c
在第二个命令中所做的那样。这是为了防止替换一些不需要替换的单词。在vim中打开所有文件:
$ vim *
将foo
替换为bar
:argdo %s/foo/bar/ | update
教程:在vim中打开所有文件:
$ vim *
将foo
替换为bar
:argdo %s/foo/bar/ | update
教程:最简单的方法是:
vim $(egrep -l '/foo/' **/*) -c 'bufdo %s/foo/bar/g'
files=()
while IFS= read -rd '' filename; do
files+=("$filename")
done < <(egrep -Zl '/foo/' **/*)
vim "${files[@]}" -c 'bufdo %s/foo/bar/g'
但如果文件名上有空格,则此操作将失败,更可靠的方法是:
vim $(egrep -l '/foo/' **/*) -c 'bufdo %s/foo/bar/g'
files=()
while IFS= read -rd '' filename; do
files+=("$filename")
done < <(egrep -Zl '/foo/' **/*)
vim "${files[@]}" -c 'bufdo %s/foo/bar/g'
files=()
而IFS=read-rd“”文件名;做
文件+=(“$filename”)
完成<最简单的方法是:
vim $(egrep -l '/foo/' **/*) -c 'bufdo %s/foo/bar/g'
files=()
while IFS= read -rd '' filename; do
files+=("$filename")
done < <(egrep -Zl '/foo/' **/*)
vim "${files[@]}" -c 'bufdo %s/foo/bar/g'
但如果文件名上有空格,则此操作将失败,更可靠的方法是:
vim $(egrep -l '/foo/' **/*) -c 'bufdo %s/foo/bar/g'
files=()
while IFS= read -rd '' filename; do
files+=("$filename")
done < <(egrep -Zl '/foo/' **/*)
vim "${files[@]}" -c 'bufdo %s/foo/bar/g'
files=()
而IFS=read-rd“”文件名;做
文件+=(“$filename”)
完成<