按照https://www.emacswiki.org/emacs/EmacsMsWindowsIntegration 的说明在 Windows 10 中将 emacs 27.1 作为守护进程启动后,其中 path\to\emacs 为 "c:\emacs-27.1\bin\runemacs.exe --daemon ,看这里:
你也可以打开资源管理器,在地址栏中输入 shell:startup,然后回车。在此启动>文件夹中,通过右键单击并选择新建->快捷方式来创建快捷方式。当询问位置时,请放置 > 以下内容:“X:\path\to\emacs\bin\runemacs.exe” --daemon 在您已将正确路径替换为 runemacs.exe 的位置。此快捷方式将在启动时运行。如果 Emacs 服务器尚未运行,您可以双击该快捷方式来启动它。
Emacs 守护程序在 c:/emacs-27.1/.config/emacs/init.el 中加载初始化文件,并且到目前为止正确定义了任何函数,只有在 init 中初始化并在 describe-personal-keybindings 下列出的键绑定不' emacsclientw.exe 启动时无法工作。
它们是最初为 windows 保留并在 init 中解码然后重新编码的绑定。例如,这个家伙在连接到守护进程的客户端中表现不佳(在 Cm 之后没有任何反应),但在使用框架启动 emacs 时工作得很好。
(define-key input-decode-map [?\C-m] [C-m])
; translate it as synonymous with <apps> key
(define-key key-translation-map (kbd "<apps>") (kbd "<C-m>"))
;create a prefix command
(define-prefix-command 'super-keymap)
;set C-m as the prefix-command (note s- is also enabled now, so all C-m can be run with s-)
(global-set-key (kbd "<C-m>") super-keymap)
重新绑定这些家伙后会出现相同的错误,C-[
并且C-]
;rebind C-] keys
;rebind abort-recursive-edit, ESC will work on windows
(global-unset-key (kbd "C-]"))
(define-key input-decode-map (kbd "C-[") [control-bracketleft])
(bind-key [control-bracketleft] 'sp-backward-sexp)
(global-unset-key (kbd "C-]"))
(define-key input-decode-map (kbd "C-]") [control-bracketright])
(bind-key [control-bracketright] 'sp-forward-sexp)
守护进程在启动时当然不会打开框架,因此它很可能处于终端模式。也许在终端模式下无法通过相同的命令访问 Windows 上的这些键?还是这里发生了其他事情?
有接盘侠吗?