在 Iterm2 上使用 EMACS

在 Mac 上有幾種選擇

我目前是使用 Iterm2 + Emacs 24 的方案。

組合鍵

Emacs 最著名的就是,有大量的組合鍵指令可以使用,當然也可以自已配置新的組合鍵。
但有些組合鍵,在 Iterm 2 上就會出現一些問題,比如無法輸入像 C-~C-!C-@ 這種組合鍵,當要加入別人的配置時,就會覺的綁手綁腳了。

前幾天研究了一下,找到了一些解決辦法

Xterm Control Sequences

在 terminal 裡,組合鍵大多遵循 Xterm Control Sequences 的規範,這規範大致上是對於有對應 ASCII 碼的組合鍵,就發送對應的 ASII 碼,否則用一個特殊序列來表示,像是 F1 就表示成 ^[OP 或者 ^[[11~,這個序列都是以 ESC(對應到 ASCII 碼中為 27、實際按鍵 ESC 或者 Ctrl-[,常寫成 \e 或是 ^[) 開頭,所以也叫做 Escape sequences。更多介紹請看Xterm Control Sequences

所以當你要在 Iterm 2 中使用這些組合鍵時,就必須自已擴展這些組合鍵。

在 Iterm 2 裡可以在 Preferences > Keys 裡設定,比如說要新增 C-! 的按鍵,就按下方的 + 號,並填入 Keyboard Shortcut 按下 Ctrl+!,Action 和 Esc+ 填入 Send Escape Sequence [27;6;33~,就可以新增 C-! 的組合鍵了。

對於 Ctrl/Alt/Shift 這些 modifier,是在類別前綴後面加上 ;mm 是一個數字,其值分別是 Shift:1 Alt: 2 Ctrl: 4。

所以要輸入 C-! 就等於輸入 Ctrl + Shift + 1,Ctrl + Shift 等於 5,不過還要再加上 1,所以 m 等於 61 的 ASCII 碼是 33,最後組合起來就是 ;6;33,再加上前綴 [27 和後綴 ~ 就可以了。

結論

對於 Xterm Control Sequences,這篇也只是粗淺的介紹,但應該能應付大多數的 Emacs 組合鍵了!

參考

终端下使用Emacs时的组合鍵

Show your support

Clapping shows how much you appreciated SDLyu’s story.