Дублировать частичный текст строки с помощью vi / vim - PullRequest
2 голосов
/ 04 февраля 2020

У меня есть два списка ниже:

abc.domain.com
defg.domain.com
hijklmn.domain.com
abc.domain.com/sub/
defg.domain.com/anothersub/
hijklmn.domain.com/thirdsub/

Мне нужно, чтобы эти два списка выглядели так:

abc.domain.com?ref=abc
defg.domain.com?ref=defg
hijklmn.domain.com?ref=hijklmn
abc.domain.com/sub/?ref=sub
defg.domain.com/anothersub/?ref=anothersub
hijklmn.domain.com/thirdsub/?ref=thirdsub

Как мне выполнить sh это в vi / vim?

1 Ответ

6 голосов
/ 04 февраля 2020

Предположим, что два списка находятся в двух разных буферах. Мы можем выполнить работу с помощью команды vim :s:

Для списка 1:

%s/\v([^.]+).*/&?ref=\1/

Для списка 2:

%s#\v.*/([^/]+)/$#&?ref=\1#

Если два списка смешаны в одном буфер, вы можете использовать команду :g, чтобы выполнить замену только для определенной цели.

...