我的问题建立在this answer by Trey Jackson到this question from SyntaxT3rr0r之间。emacs运行后选择离开区域
Trey提出了以下函数,用于递增Emacs缓冲区所选区域中的每个两位数字。
(defun add-1-to-2-digits (b e)
"add 1 to every 2 digit number in the region"
(interactive "r")
(goto-char b)
(while (re-search-forward "\\b[0-9][0-9]\\b" e t)
(replace-match (number-to-string (+ 1 (string-to-int (match-string 0)))))))
我想用这个函数来达到我自己的目的。但是,我想连续多次增加数字。目前形式的函数的问题是,在每次调用之前,我必须用鼠标再次选择区域。
我的问题是:如何修改Trey的函数,以便它在调用之后离开选定的区域?(我的最终目的是将这一功能分配到键盘快捷键(类似CTRL + ↑),这样我,如果我保持CTRL并按住↑键,都在两位数我的选定区域将不断增加。)
顺便说一句,我知道this answer by Brian Campbell,这表明使用exchange-point-and-mark
重新选择以前选择的区域。但是,我尝试了这一点,在这种情况下似乎没有帮助。
+1但请注意,这里粘贴的内容不是宏而是函数。 * defun *在elisp中定义了一个函数,而不是宏:)(我编辑了你的问题,并将“宏”改为“函数”)。请注意,Lisp方言中的宏是完全不同的野兽:) – TacticalCoder
可能是一个愚蠢的建议,但是......即使在第一次调用快捷方式后没有看到所选区域,是不是可以再次调用该方法并且再次?在我的系统上,编号保持不变,并且按原样编写函数。 – TacticalCoder
真的吗?嗯,这不会发生在我身上。我用鼠标突出显示一个区域,然后我用'Mx add-1-to-2-digits'来增加数字,然后再次输入'Mx add-1-to-2-digits',这次什么都没发生。我想知道我们做了什么改变? –