如何在vi编辑器中替换多行中的单词?

如何在vi编辑器中替换多行中的单词?

例如,在 vi 编辑器中创建了一个包含 8 行单词“today”的文件,我想知道如何使用一次命令将 4 行更改为单词“昨天”。

答案1

大多数作用于文件内容的 ex 命令(即通过按:(冒号)然后按命令名称来调用的命令)允许在命令之前指定范围。此范围指定哪些行受该命令影响。范围的一般形式是用逗号分隔的两个数字,该命令作用于从第一个数字到第二个数字(含)的所有行。例如

1,4s/today/yesterday/g

替换文件前四行中出现的所有todayby 。yesterday

您可以在数字前添加一个符号,使其相对于当前行。例如

-1,+1s/today/yesterday/g

对上一行、当前行和下一行执行替换。如果包含逗号但省略其中一个数字,则表示当前行,例如

,+1s/today/yesterday/g

对当前行和下一行执行替换。您还可以使用$数字代替数字来表示文件的最后一行。如果省略逗号并仅指定一个数字,则该命令仅作用于这一行,例如

+1s/today/yesterday/g

仅在以下行上执行替换。

答案2

您可以使用命令:

:n,m s/today/yesterday/

即从第 n 行到第 m 行将“今天”一词替换为“昨天”。

答案3

尝试这个 :

进入 vi 编辑器的命令模式并尝试以下命令:

:%s/today/yesterday/g

g - 在全局范围内将今天替换为昨天。

相关内容