如何在vi中进行查找和替换?
vi
8dtrkrch1#
如果你的选择是跨一行或多行的,这可以通过在视觉模式下选择文本来完成(我假设这就是你正在做的),然后按:开始键入命令,你会看到类似这样的东西出现在命令行中:
:
:'<,'>
这意味着该命令将应用于所选内容。然后键入s/search/replace/并按回车键。(如果要替换所有匹配项,请在第三个斜杠后添加g;如果要对每个替换项进行确认,请在第三个斜杠后添加c)
s/search/replace/
g
c
o2g1uqev2#
这里建议的大多数其他解决方案都适用于选择发生的整行,这可能不是您想要的。要在选定内容中搜索和替换ONLY,请首先在视觉上选择文本,然后使用如下命令:
:%s/\%VSEARCH/REPLACE/g
这将只在可视选择的部分中进行搜索和替换,用REPLACE替换REVIEW。如果您选择了多行,这也将适用于多行。
odopli943#
如果您使用视觉模式进行选择,则:
:'<,'>s/regex/replacement/options
如果从可视模式进入命令行模式(通过按':'),Vim将自动放置范围('<,'>)。
':'
'<,'>
a64a0gku4#
更多帮助Search and replace in a visual selection
btqmn9zl5#
Ex命令的范围是逐行指定的(请参见*cmdline-ranges*),并且当在存在可视选择的情况下按下:时,行范围将在命令行上自动指定为'<,'>(见*v_:*),这使得:s[ubstitute]命令在整个行上操作,除非在搜索模式中用\%V指定了可视选择边界(见*/\%V*),例如:/\%Vvi\%Vm仅在视觉选择内匹配“Vim”,其中选择的结束正好在搜索模式的结束之前指定,因为每个\%V指定下一个字符作为视觉选择的开始或结束,因此/\%Vvim\%V将要求视觉选择在“m”之后继续以匹配“vim”。请注意,在搜索模式中使用第二个\%V是不必要的,除非匹配需要正好在视觉选择的边界处或仅部分在视觉选择中。
*cmdline-ranges*
*v_:*
:s[ubstitute]
\%V
*/\%V*
/\%Vvi\%Vm
/\%Vvim\%V
ar7v8xwq6#
如果你想对文件中的所有示例进行 global 搜索和替换(使用可选的正则表达式),我会这样做:
:%s/foo/bar/g
省略g以进行局部替换。
6条答案
按热度按时间8dtrkrch1#
如果你的选择是跨一行或多行的,这可以通过在视觉模式下选择文本来完成(我假设这就是你正在做的),然后按
:
开始键入命令,你会看到类似这样的东西出现在命令行中:这意味着该命令将应用于所选内容。然后键入
s/search/replace/
并按回车键。(如果要替换所有匹配项,请在第三个斜杠后添加g
;如果要对每个替换项进行确认,请在第三个斜杠后添加c
)o2g1uqev2#
这里建议的大多数其他解决方案都适用于选择发生的整行,这可能不是您想要的。
要在选定内容中搜索和替换ONLY,请首先在视觉上选择文本,然后使用如下命令:
这将只在可视选择的部分中进行搜索和替换,用REPLACE替换REVIEW。如果您选择了多行,这也将适用于多行。
odopli943#
如果您使用视觉模式进行选择,则:
如果从可视模式进入命令行模式(通过按
':'
),Vim将自动放置范围('<,'>
)。a64a0gku4#
更多帮助Search and replace in a visual selection
btqmn9zl5#
Ex命令的范围是逐行指定的(请参见
*cmdline-ranges*
),并且当在存在可视选择的情况下按下:
时,行范围将在命令行上自动指定为'<,'>
(见*v_:*
),这使得:s[ubstitute]
命令在整个行上操作,除非在搜索模式中用\%V
指定了可视选择边界(见*/\%V*
),例如:/\%Vvi\%Vm
仅在视觉选择内匹配“Vim”,其中选择的结束正好在搜索模式的结束之前指定,因为每个\%V
指定下一个字符作为视觉选择的开始或结束,因此/\%Vvim\%V
将要求视觉选择在“m”之后继续以匹配“vim”。请注意,在搜索模式中使用第二个\%V
是不必要的,除非匹配需要正好在视觉选择的边界处或仅部分在视觉选择中。ar7v8xwq6#
如果你想对文件中的所有示例进行 global 搜索和替换(使用可选的正则表达式),我会这样做:
省略g以进行局部替换。