如何在 vim 中查找模式并替换

如何在 vim 中查找模式并替换

目前的展望;

P12104001;example_01_01,
P12104002;example_02_01,
P12104003;example_03_01,
P12104004;example_04_01,

我希望有;

<example_01_01>,
<example_02_01>,
<example_03_01>,
<example_04_01>,

请建议在 gvim 中使用替换的选项(以便我只能替换标记区域中的字符串。示​​例如下:'a,'b s \*******\<******>

答案1

要从

P12104001;example_01_01,
P12104002;example_02_01,
P12104003;example_03_01,
P12104004;example_04_01,

对此

P12104001;example_01_01,
<example_02_01>,
<example_03_01>,
P12104004;example_04_01,

使用

:/002/,/003/s/.*\(example_.._..\)/<\1>/

读作

: Command
 /Start of section/,/End of section/
            s/    substitute
             .*   all chars up to 
                \(string to remember . for wild chars\)
             /<   with 
               \1 put in the remember string
                 >/  rest of replacement.

在 Vim 中使用 :help address 查看寻址行范围的其他方法。

答案2

Fred Gannett 已经回答了您的问题,但要回答您的评论:

%s/.*\(example_\d\+_\d\+\).*/<\1>,/

替换整个文件,而不对“example”后面的数字进行硬编码。如果您想限制范围,请使用视觉选择或类似的东西.,3s/.*\(example_\d\+_\d\+\).*/<\1>,/(当前行到第三行)。

您必须确保包含正则表达式的每一行都应该被替换。

相关内容