首页 > 解决方案 > 查找所有子匹配以重新排序句子

问题描述

在 Windows 7 上使用 gvim 8.0,我想重新排序部分句型:

前:

Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 06:48:35.231)
Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 06:54:01.259)
Execution time: 0.22s Statement 1 of 8 finished (2018-05-18 07:05:54.480)
<et al>

后:

Statement 1 of 8 finished (2018-05-18 06:48:35.231) Execution time: 0.22s 
Statement 1 of 8 finished (2018-05-18 06:54:01.259) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 07:05:54.480) Execution time: 0.22s 
<et al>

我以为我会捕获子匹配,​​然后替换;我似乎无法获得超过一个子匹配 - 我尝试过:

/\v^([^S]*)

并且匹配了我想要的第一个子匹配,但是:

/\v^([^S]*),([^S]*)

似乎什么也没找到。

这是正确的方法吗?我究竟做错了什么?

标签: vim

解决方案


对于您的输入句子,您可以使用替换:

 %s/\v(.*) (Statement.*)/\2 \1/g

这将捕获之前的文本Statement并将其放在句子的末尾。输出:

Statement 1 of 8 finished (2018-05-18 06:48:35.231) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 06:54:01.259) Execution time: 0.22s
Statement 1 of 8 finished (2018-05-18 07:05:54.480) Execution time: 0.22s

推荐阅读