Найти все совпадения, чтобы изменить порядок предложений - PullRequest
0 голосов
/ 18 мая 2018

Используя gvim 8.0 в Windows 7, я хотел бы изменить порядок частей предложения:

до:

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]*)

не похоженайти что-нибудь.

Это правильный подход?Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

В качестве входных предложений вы можете использовать подстановку:

 %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
0 голосов
/ 19 мая 2018
:g/^E/exec "norm! dtSA \<esc>p"

g ........... globally
^E .......... at the lines that start with "E"
exec ........ execute
normal! ..... in normal mode
dtS ......... delete [un]till before next "S"
A ........... start insert mode at the end of the line
............. add one space
p ........... paste
0 голосов
/ 18 мая 2018

В вашем тексте нет запятой, так почему у вас она есть в шаблоне поиска?

Я считаю awk более интуитивно понятным:

:%!awk '{print $4, $5, $6, $7, $8, $9, $10, $1, $2, $3}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...