Debian12更新后Emacs打开并重命名Eshell的函数失效求助
问题原因与修复方案
问题原因
Debian 12升级后附带的Emacs版本(通常为28.x及以上)对Eshell的初始化逻辑做了调整,导致你原来的键盘宏依赖的缓冲区焦点时机发生变化:
- 原宏是模拟手动按键:
C-u M-x eshell RET M-x rename-buffer RET auxiliary RET - 新版本中,Eshell打开后,缓冲区并未立即切换到可执行
M-x命令的上下文,后续按键直接被输入到Eshell的命令行,因此auxiliary被当成无效命令执行。
修复方法
放弃依赖按键模拟的键盘宏,改用显式的Elisp函数实现功能,稳定性更强。替换.emacs中的原有代码为:
(defun aux (&optional arg) "打开新的Eshell缓冲区并重命名为auxiliary" (interactive "p") (let ((new-eshell (eshell arg))) (with-current-buffer new-eshell (rename-buffer "auxiliary"))))
代码说明
(eshell arg):arg对应你调用时的C-u参数,确保每次打开新的Eshell实例(而非复用已有缓冲区)with-current-buffer:切换到新打开的Eshell缓冲区,直接调用rename-buffer完成重命名,完全不依赖按键模拟,避免版本差异带来的问题
内容的提问来源于stack exchange,提问作者larry77
相关产品推荐
相关产品推荐

