Преобразование имени файла (regexp) в файловый браузер Emacs

У меня есть проблема, аналогичная той, которая решается в

Emacs: регулярное выражение, заменяющее регистр

Я хочу использовать режим файлового браузера 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, однако источником ошибки, по-видимому, является \,(upcase ), который, кажется, не используется в Dired, так как у меня нет этой ошибки, когда я использую, например \1\3\2как заменить регулярное выражение.

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

1 ответ

% R в звонках dired-do-rename-regexp который заканчивает тем, что звонил replace-match от dired-string-replace-matchи replace-match не поддерживает замены elisp.

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

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

Другие вопросы по тегам