Emacs:搜索和替换操作

Emacs : Search and replace operations

我正在寻找一种在进行操作的同时用 Emacs 搜索和替换 regexp 的方法。我真的不知道如何解释,但这里有一个例子:

假设我有 200 多行代码:

"lq.u $r40r41 = 0[$r39]\n"
"addd $r14r15 = $r14$r15, $r40$r41\n"
";;\n"              
"lq.u $r42r43 = 16[$r39]\n"             
"addd $r16r17 = $r16$r17, $r42$r43\n"
";;\n"    

我在选择寄存器时犯了一个错误,所以我想把它们改成:

"load $r39r40 = 0[$r39]\n"
"add $r13r14 = $r13$r14, $r39$r40\n"
";;\n"              
"load $r41r42 = 16[$r39]\n"             
"addd $r15r16 = $r15$r16, $r41$r42\n"
";;\n"  

所以基本上,我想要的是一种正则表达式搜索 2 位数字 "XX" 并将它们替换为 "XX-1" 的方法。有没有办法通过 Emacs 或其他方式做到这一点?

我设法从使用 Excel 工作表的手动编辑中节省了一些时间,但我需要一种更高效、更简单的方法来完成这项工作。

我不知道 r 之前是否应该总是有一个 $,所以要么:

M-x query-replace-regexp RET $r\([0-9]+\) RET $r\,(1- \#1) 返回

或:

M-x query-replace-regexp RET r\([0-9]+\) RET r\,(1- \#1) 返回

其中:

  • \, 计算替换中的 lisp 表达式,因此:
  • \,(1- ...) 是对 1- 函数的调用,参数为:
  • \#1 在此替换语法中,将匹配的第 1 组表示为数字。