2012-05-21 5 views
0

У меня аналогичная проблема, к тому, что обратилось вСлучая имени файла (регулярные выражения) в браузере файлов Emacs

Emacs: regular expression replacing to change case

Я хочу использовать режим браузера файлов Emacs' Dired переименовать файл из 08 - hey you.mp3 в 08 - Hey you.mp3.

% R набирает заменить ^\([0-9]* - \)\([a-z]\)\(.*\)$ на \1\,(upcase \2)\3 и я получаю ошибку

Invalid use of `\' in replacement text 

Когда я запрос замены, регулярное выражение подобного регулярному выражения \([0-9]* - \)\([a-z]\)\(.*\) по \1\,(upcase 2)\3 в обычном текстовом буфере у меня нет проблем. Единственной разницей входа являются: ^ и $, которые требуются, как объяснено в http://www.gnu.org/software/emacs/manual/html_node/emacs/Transforming-File-Names.html#Transforming-File-Names, однако источником ошибки является \,(upcase), который, как представляется, не используется в Dired, поскольку у меня нет этой ошибки, когда я использую, например, \1\3\2 как заменить regexp.

Я использую Emacs 23.2.1

ответ

2

% R в Dired вызовов dired-do-rename-regexp который заканчивается вызовом replace-match из dired-string-replace-match, и заменить матча не поддерживает Elisp замены.

Что вы можете сделать, это использовать wdired, что позволяет редактировать список каталогов как обычный текст.

С-хС-д (т.е. обычный toggle-read-only связывания) будет переключаться между Dired и wdired. Когда-нибудь в wdired, вы можете использовать обычный поиск и замену, включая шаблон замены elisp.