Преобразование имени файла (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.