Emacs正则表达式增加/减少数组索引
问题描述:
是否可以使用正则表达式来更改emacs中的数组索引?Emacs正则表达式增加/减少数组索引
例如对于一些C代码的变化:
int my_array[4];
my_array[0] = 1;
my_array[1] = 2;
my_array[2] = 3;
到:
int my_array[4];
my_array[1] = 1;
my_array[2] = 2;
my_array[3] = 3;
一种与[i+1]
操作取代[i]
?
答
这样的事情?
M-x query-replace-regexp my_array\[\([0-9]+\)\] RET my_array[\,(1+ \#1)]
\,替换字符串可以被任何lisp表达式替换。
(最后编辑:代替(string-to-int \1)
使用\#1
)
答
增量:
M-x query-replace-regexp \[\([0-9]+\)\] RET [\,(1+ \#1)]
递减:
M-x query-replace-regexp \[\([0-9]+\)\] RET [\,(1- \#1)]
的作品就像一个魅力,我削减它归结为:的Mx 'query-replace-regexp''[[([0-9] + \] \]''[\,(1+(string-to-int \ 1))]'逐步遍历所有数组。非常感谢 – bph
你可以用'\#1'代替'(string-to-int \ 1)'。 – Sean
减少数组索引使用-mx query-replace-regexp my_array \ [\([0-9] + \)\] RET my_array [\,(1- \#1)] – bph