Это регулярное выражение работает:
:%s#.*/\(.*\)\.txt$#& \1#
Стартовый .*/
пропускает все до последнего шага sh (он жадный, поэтому будет перехватывать всю часть каталога.)
Затем мы фиксируем имя файла в группе с \(.*\)
.
И, наконец, сопоставляем расширение с \.txt
и привязываем его к концу строки.
Для замены мы используйте &
, чтобы сохранить полный путь, а затем добавьте \1
, чтобы включить только имя файла.
Мы можем использовать #
в качестве разделителя, поэтому нам не нужно экранировать /
с. У нас есть только один здесь, но это полезный метод для использования, когда пути включены, поэтому я уверен, что я использую его здесь для согласованности.
Возможно, вы захотите взглянуть на :help pattern-searches
чтобы узнать больше о регулярных выражениях Vim, которые вы можете использовать для поиска и подстановок.
(В общем, документация Vim великолепна, и система помощи может быть очень полезна, если вы знаете, как с ней обращаться, см. :help helphelp
для более.)