我遇到与
中提到的问题类似的问题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
当我在普通文本缓冲区中查询替换-regexp时,\([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
答案 0 :(得分:2)
% R
中的 dired-do-rename-regexp
最终会从replace-match
拨打dired-string-replace-match
,而且替换匹配不支持elisp替换。
您可以利用wdired
,它允许您将目录列表编辑为纯文本。
C-x C-q (即通常的toggle-read-only
绑定)将在dired和wdired之间切换。进入wdired后,您可以使用普通搜索和替换,包括elisp替换模式。