找到模式并替换为模式 vim 之后的所有内容

  • 本文关键字:模式 之后 vim 替换 regex vim
  • 更新时间 :
  • 英文 :


我有一个文件,其中包含如下内容:

size is X1 Identifier is Y1
size is X1 Identifier is Y1
size is X1 Identifier is Y1

我想重新排列文件,以便我得到

Identifier is Y1 size is X1 
Identifier is Y1 size is X1 
Identifier is Y1 size is X1 

如何使用 vim find & rereplace 执行此操作?还是 vim 中的任何其他函数?

使用捕获组并切换两个组

%s/v(.*) (I.*)/2 1

正如你说的"或 vim 中的任何其他函数",我将通过录制宏来提供替代方案。就我个人而言,我喜欢使用宏来处理这样的事情,因为您可以执行一次想要执行的操作,这有助于您准确思考您想要的内容,然后根据需要多次重复相同的操作。

几乎可以肯定有一种比下面更有效的方法,但希望这是一种相当简单的方法。

从第一行的任意位置开始光标。

Q A(在寄存器a中开始录制宏 - 您可以用a替换任何其他字母(

0(移至行首(

接下来,执行要用于删除行的第一部分的任何命令,例如:3dw- 如果您需要更复杂的规则来识别要移动的行部分,则可以在此处执行此操作。

$(移动到行尾(

a SPACE ESC p(在行尾附加一个空格,然后粘贴我们之前删除的文本(

j(向下移动一行,因此当我们完成宏的运行时,我们就在下一行(

Q(停止录制(

完成此操作后,第一行应处于所需状态,光标将位于第二行。要从当前位置开始重复上述操作,只需执行以下操作:

@ a(或您在第一步中选择的任何字母代替a(。

我不怎么使用 vim,但您正在搜索的术语是"正则表达式捕获组",几乎存在于每个正则表达式实现中。 捕获组为您提供匹配模式的各个部分,并允许您根据需要重新组织它们。

这是一个可能包含您的答案的问题:

类似的问题

:%s/(size is w*) (Identifier is w*)/2 1/g这行得通。我假设你标记为X1Y1可以是任何单词,因此w*.

最新更新