前段时间@Oleg Pavliv 在https://unix.stackexchange.com/questions/47615/emacs-simple-arithmetics-in-query-replace中解释了如何在 emacs 中的查询替换(交互式)中进行简单的算术运算。
现在我想对一个小的 elisp 程序使用相同的方法,但它不起作用。例如,考虑以下 elisp 代码的最小示例:
(defun Nshift ()
(interactive)
(query-replace-regexp "\\([0-9]+\\)\\.Number" "\\,((+ 3 \\#1)).Number")
)
现在假设我Nshift
在包含例如字符串的缓冲区中运行,4.Number
然后我收到以下错误消息。
match-substitute-replacement: Invalid use of `\' in replacement text
一个正确的 elisp 实现Nshift
会是什么样子?
编辑:
我看不到 Seans 的答案如何用简单易读的语法概括为更复杂的替换(我在我的应用程序中需要),例如,什么是正确的(并且易于阅读)相当于
(query-replace-regexp "\\([0-9]+\\)\\.Number.\\([0-9]+\\)" "\\,((+ 3 \\#1)).Number.\\,((+ 8 \\#2))")