我正在使用vim编辑器,它会删除所有出现的给定单词foo,执行以下命令:
foo
%s/foo//
请注意,我在这里没有使用全局运算符。有人能帮助解决这个问题吗?
k3bvogb11#
“%”范围覆盖所有行,即整个文件。末尾处的“g”标志将替换行中的所有搜索词。因此,缺少“g”标志意味着只有foo在每行中第一次出现时才会被删除/替换。“假设”是你在每一行上只出现一个foo,看起来好像每一个foo都被删除了。试着在一行上放置多个foo,然后你会发现并不是所有的foo都被删除了。:%s/foo// * 覆盖每一行,仅删除每行中第一次出现的foo。*:%s/foo//g * 覆盖每一行,并删除每一行中出现的foo。*:s/foo//仅覆盖当前行,并且如果foo存在,则仅移除第一次出现的foo。:s/foo//g只覆盖当前行,并且当前行上出现的所有foo都将被删除。参考**:帮助usr_12.txt**12.1替换一个单词。 x1c 0d1x
:%s/foo//
:%s/foo//g
:s/foo//
:s/foo//g
1条答案
按热度按时间k3bvogb11#
“%”范围覆盖所有行,即整个文件。
末尾处的“g”标志将替换行中的所有搜索词。
因此,缺少“g”标志意味着只有foo在每行中第一次出现时才会被删除/替换。
“假设”是你在每一行上只出现一个foo,看起来好像每一个foo都被删除了。试着在一行上放置多个foo,然后你会发现并不是所有的foo都被删除了。
:%s/foo//
* 覆盖每一行,仅删除每行中第一次出现的foo。*:%s/foo//g
* 覆盖每一行,并删除每一行中出现的foo。*:s/foo//
仅覆盖当前行,并且如果foo存在,则仅移除第一次出现的foo。:s/foo//g
只覆盖当前行,并且当前行上出现的所有foo都将被删除。参考**:帮助usr_12.txt**12.1替换一个单词。 x1c 0d1x