vim替换为带有OR运算符并选择可视模式的文本的多个模式

问题描述 投票:1回答:2

我有:

RT_T_up2 = CubicSpline(z_alot, RT_tab_up2)
RT_T_dw2 = CubicSpline(z_alot, RT_tab_dw2)
RT_T_up3 = CubicSpline(z_alot, RT_tab_up3)
RT_T_dw3 = CubicSpline(z_alot, RT_tab_dw3)
RT_T_up4 = CubicSpline(z_alot, RT_tab_up4)
RT_T_dw4 = CubicSpline(z_alot, RT_tab_dw4)

并且我想在up和dw前面加一个“ 1”,即得到:

RT_T_up12 = CubicSpline(z_alot, RT_tab_up12)
RT_T_dw12 = CubicSpline(z_alot, RT_tab_dw12)
RT_T_up13 = CubicSpline(z_alot, RT_tab_up13)
RT_T_dw13 = CubicSpline(z_alot, RT_tab_dw13)
RT_T_up14 = CubicSpline(z_alot, RT_tab_up14)
RT_T_dw14 = CubicSpline(z_alot, RT_tab_dw14)

使用可视模式将原始文本选择到vim。

我尝试做:

:'<,'>s:up\([2-4]\):up1\1:e |  s:dw\([2-4]\):dw1\1:e

但是它只给出:]来代替第一个up

RT_T_up12 = CubicSpline(z_alot, RT_tab_up2)
RT_T_dw2 = CubicSpline(z_alot, RT_tab_dw2)
RT_T_up13 = CubicSpline(z_alot, RT_tab_up3)
RT_T_dw3 = CubicSpline(z_alot, RT_tab_dw3)
RT_T_up14 = CubicSpline(z_alot, RT_tab_up4)
RT_T_dw4 = CubicSpline(z_alot, RT_tab_dw4)

如何在每个1up模式之后插入“ dw”?

问候

我有:RT_T_up2 = CubicSpline(z_alot,RT_tab_up2)RT_T_dw2 = CubicSpline(z_alot,RT_tab_dw2)RT_T_up3 = CubicSpline(z_alot,RT_tab_up3)RT_T_dw3 = CubicSpline()_] [... []

与交替运算符一起使用嵌套分组

我为updw创建了字符组,并将它们与交替运算符\|嵌套在一起。

如@wobr所指示,请使用g标志对给定行上的所有事件进行替换。您可以在此处:help :s_flags中阅读有关替换标志的信息。

我仅在替换字符串中引用字符组\1\4

'<,'>s/\(\(up\)\|\(dw\)\)\([2-4]\)/\11\4/ge

这里是此命令的前后:

enter image description here

之后:

enter image description here

在您的特定情况下,所有条目都对齐到同一列,并且您想对所有条目都应用相同的修改(“插入1”),也可以使用Visual块模式来完成此任务。
执行以下命令序列:

[f2:将光标移动到第一行中的字符2

    <C-V>:进入可视块模式。
  • [5j:将选择范围扩展到接下来的5行,涵盖了您要修改的所有条目。
  • I1<Esc>:在可视块之前插入“ 1”。当您按Escape键时,所有其他行将收到相同的修改。
  • [2f2:将光标移动到第一行的最后一个“ 2”。
  • .:重复。这将再次在您现在所在的列中以相同的行数插入“ 1”。
vim sed replace substitution
2个回答
2
投票
与交替运算符一起使用嵌套分组

0
投票
执行以下命令序列:
© www.soinside.com 2019 - 2024. All rights reserved.