%: s / \ ([0-9] * \) _ \ (* \) / \ 2 не будет переименовывать файлы - PullRequest
2 голосов
/ 15 июля 2009

Может кто-нибудь отредактировать %:s/\([0-9]*\)_\(*\)/\2, чтобы я мог переименовывать файлы. например, если имя файла 5555_word_word.jpg, то я хочу, чтобы имя файла было word_word.jpg. я чувствую себя так близко!

Ответы [ 3 ]

6 голосов
/ 15 июля 2009

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

s/^[0-9]+_//
3 голосов
/ 15 июля 2009

Ваша версия в порядке, но вы забыли точку, и вам, вероятно, следует привязать ее к началу строки или к границе слова, используя ^ или \<.

:%s/^\([0-9]*\)_\(.*\)/\2/

Вы можете использовать \v для очистки некоторых из этих слешей.

:%s/\v^([0-9]*)_(.*)/\2/

Вы можете использовать \ze, чтобы избежать захвата групп.

:%s/^[0-9]*_\ze.*//

Но конечный .* излишен, потому что он соответствует чему угодно. Так что используйте версию Сета, она самая простая.

3 голосов
/ 15 июля 2009

Попробуйте это:

:%s/\([0-9]*\)_\(.*\)/\2

. будет соответствовать любому символу (часть второй группировки), а * будет жадно соответствовать любому их количеству Ваше оригинальное регулярное выражение отсутствовало в этой директиве. Это также переименует файлы вида _word_word.txt в word_word.txt. Если вы хотите, чтобы цифры совпадали (вероятно, хорошая идея), используйте:

:%s/\([0-9]\+\)_\(.*\)/\2

Директива \+ означает совпадение с 1 или более экземплярами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...