0

我有一个与中解决的问题类似的问题

Emacs:正则表达式替换以改变大小写

我想使用 Emacs 的文件浏览器模式 Dired 将文件从 重命名08 - hey you.mp308 - 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$中所述,这是必需的,但是错误的来源似乎是,它在 Dired 中似乎不可用,因为当我使用例如替换正则表达式时我没有这个错误。\,(upcase )\1\3\2

我正在使用 Emacs 23.2.1

4

1 回答 1

2

% Rdired-do-rename-regexp在最终调用replace-matchfrom的 dired 调用中dired-string-replace-match,并且 replace-match 不支持 elisp 替换。

您可以做的是利用wdired它允许您将目录列表编辑为纯文本。

C-xC-q(即通常的toggle-read-only绑定)将在 dired 和 wdired 之间切换。一旦进入 wdired,您就可以使用普通的搜索和替换,包括 elisp 替换模式。

于 2012-05-21T22:30:54.277 回答