Emacs 在 iTerm2 下的按键支持

由于经常需要通过 SSH 用 Emacs 修改代码, 有不能忍受 X11 低效率的 forward, 所以一直在寻找 iTerm 2 下对 Emacs 快捷键全支持的方法, 得以有幸在一个国外小哥的 GitHub 里找到了, 地址在此 choppsv1/ dot.spacemacs.d

和本主题相关的两个文件分别是 iterm-xterm-extra.el 以及 iterm-custom-keys.py

iterm-custom-keys.py 提供了生成 iTerm2 配置文件以及相应 keymap.el 文件的功能.

init-keymap.el · GitHub 这个 Gist 提供了三个文件, 其中 iterm-custom-keys.py 修改了 “Text” 和 “Action” 字段, 具体修改内容可以看 Revisions .

在 Emacs 中加入 keymap, 将 json 文件放在 ~/Library/Application Support/iTerm2/DynamicProfiles 目录下, iTerm2 会自动识别^1, 然后使用新的 Profiles 创建并打开 Emacs, 诸如 C-; C-'等都可以使用了, 如果需要其它按键映射, 可以直接修改 iterm-custom-keys.py 文件

# 生成 keymap.el
python iterm-custom-keys.py > keymap.el
# 生成 iterm2.json
python iterm-custom-keys.py > ~/Library/Application Support/iTerm2/DynamicProfiles/iTerm2.json

关于终端下 Color 的问题, 可以使用 xterm-24bits, 具体讨论可见这里 True color (24-bit) in terminal - #6,来自 twlz0ne , 已经可以和 GUI 做到几乎无差别的显示了.

多说一句, 对 macOS 提供 X11 支持的 XQuzrtz 可以直接支持众多快捷键, 不需要额外设置.

3 个赞

可以试试tramp,远程编辑文件,很好用

如果其他人在 macOS 下有更好的解决方案, 欢迎提出:grinning: 关于 Emacs 按键的讨论, 这里还有一个帖子 推荐term-keys,解决终端运行emacs按键冲突

因为不只是远程编辑, 还需要直接运行啦什么的, 有时一运行就是一天, 所以还是直接在远程方便一下, 不过多谢建议.

1 个赞

iterm2里面直接跑工作,在起了tmux之后,tmux session里面的emacs还是不认C-;

也可以换个terminal。比如kitty,wezterm。他们支持kitty keyboard protocol。然后用kkp.el