:%s/--\([a-zA-Z0-9]*\).\(.*\)--/--\1.\2.\1--/gc
или без запроса подтверждения для каждой замены:
:%s/--\([a-zA-Z0-9]*\).\(.*\)--/--\1.\2.\1--/g
даст:
--something1.something2.something1--
--anotherThing1.something2.anotherThing1--
от
--something1.something2--
--anotherThing1.something2--
Это если вы хотите скопировать первое слово после '-' до первого '.' и добавить "." и слово, найденное перед последним '-'.
Использование vim.
RE КОММЕНТАРИИ:
Кто-то упомянул, что он не будет работать, когда есть несколько слов и так далее.
Я проверил это на следующем:
start of text file:
--something1.something2.something3.something4.something5.something6--
--anotherThing1.something2.anotherThing3.anotherThing4.anotherThing5--
end of text file:
после заменить на вышеприведенное выражение:
start of text file:
--something1.something2.something3.something4.something5.something6.something1--
--anotherThing1.something2.anotherThing3.anotherThing4.anotherThing5.anotherThing1--
end of text file: