You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Emacs中设置快捷键,调用带光标处单词为参数的函数?

在Emacs中配置带光标单词作为参数的快捷键

要实现类似rtags包中M-.(Alt+.)的功能——按下快捷键后调用指定函数,并将光标所在位置的单词作为参数传入,可以按照以下步骤操作:

核心思路

Emacs内置current-word函数用于获取光标所在位置的单词,只需将这个单词作为参数传递给目标函数,再绑定到快捷键即可。

具体实现方法

方法1:匿名Lambda函数直接绑定

这是最简洁的快速绑定方式:

(global-set-key (kbd "M-.")  ; 绑定的快捷键,此处用M-.示例
                (lambda ()
                  (interactive)  ; 标记为可交互调用(快捷键触发必需)
                  (let ((current-word (current-word)))
                    (if current-word
                        (your-target-function current-word)  ; 替换为你要调用的目标函数
                      (message "未在光标处检测到单词!")))))

方法2:定义命名包装函数(更易维护)

如果需要多次复用或修改逻辑,建议定义命名函数:

(defun call-function-with-current-word ()
  (interactive)
  (let ((word (current-word)))
    (cond
     (word (your-target-function word))
     (t (message "光标处无有效单词!")))))

; 绑定快捷键
(global-set-key (kbd "M-.") 'call-function-with-current-word)

细节说明

  • current-word函数:默认按当前缓冲区语法规则识别单词,可通过参数调整行为:
    • (current-word t):获取包含符号的"单词"(比如带下划线的编程语言变量名)
    • (current-word nil t):即使光标在单词中间,也会获取完整单词
  • 目标函数适配:如果目标函数本身支持自动读取光标内容(比如rtags的rtags-find-symbol-at-point),直接绑定函数名即可,无需额外包装:
    (global-set-key (kbd "M-.") 'rtags-find-symbol-at-point)
    
  • 快捷键自定义:将(kbd "M-.")替换为需要的组合键,比如(kbd "C-c f")对应Ctrl+C+F。

内容的提问来源于stack exchange,提问作者HamsterGamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:30:18