如何在 GNU Emacs 中使用基于当前所在行值的可重复函数输入查询替换

如何在 GNU Emacs 中使用基于当前所在行值的可重复函数输入查询替换

我想获取以下数据并使用某种可重复函数用相应的数字标识符查询替换每个单词标识符的出现。

-1 ACT/CNS
-2 AG NFC
-3 AID
-4 BBG
-5 BIA
-6 BLM
-7 BOC
-8 BPD
-9 CCC
-10 CDC
-11 Census

换句话说,指向

-1 ACT/CNS
^

我希望能够按下一个键并启动以下命令

query-replace RET ACT/CNS RET -1 RET

我尝试定义一个键盘宏,但缓冲区和 Mx 调用之间似乎有足够多的跳转,从而混淆 kbmacro 并使其无法使用。

有什么想法吗?

答案1

这就是我创建键盘宏所做的,用数字替换符号。

C-a                     ;; move-beginning-of-line
M-f                     ;; forward-word
C-f                     ;; forward-char
C-SPC                   ;; set-mark-command
C-e                     ;; move-end-of-line
M-w                     ;; kill-ring-save
C-a                     ;; move-beginning-of-line
C-SPC                   ;; set-mark-command
M-f                     ;; forward-word
M-w                     ;; kill-ring-save
M-%                     ;; query-replace
C-y                     ;; yank
M-y                     ;; yank-pop
RET                     ;; newline-and-indent
C-y                     ;; yank
M-y                     ;; yank-pop
RET                     ;; newline-and-indent

当光标位于“-1 ACT/CNS”行时,上述操作将在当前缓冲区中开始查询/替换您想要的值。

除非你经常这样做(比如,不止今天),否则我会坚持使用宏,因为它很容易设置。

相关内容