terminal 下怎么分离c-i和tab

试过了stackoverflow的这些方法都不行

在终端是不可能分离的。只有在 GUI 才能分离。

1 个赞

好吧, 只能放弃另外换个键了…还是terminal方便一点

这跟 Emacs 没有关系:终端不区分 TABC-i 的话,Emacs 只知道你按了一个代号为 10 的键,不可能知道你到底按的是哪一个。

| Char            | Value | Key[1] | Key[2] |
|-----------------+-------+--------+--------|
| Tab             |     9 | C-i    | TAB    |
| Newline         |    10 | C-m    | RET    |
| Carriage Return |    13 | C-j    |        |
| ESC             |    27 |        | ESC    |

可以试试修改终端的设置,有些终端 [3] 是可以让你定制一个键到底发出什么样的值,然后再叫 Emacs 绑定这个值。比如让 C-i 发个 ,然后在 Emacs 中

(global-set-key [?の] #'emacs-version)

然后按 C-i 就会执行 emacs-version 这个命令了。


  1. C-i 对应 9 是因为 C-a ~ C-z 分别对应 1 ~ 26
  2. (emacs) Named ASCII Chars
  3. 比如 iTerm2 可以,Mac 内置的 Terminal.app 似乎不行
1 个赞

^A ~ ^Z,准确来说。这些都是 ASCII 字符,只是通常不可见。

mac 下可以这样使用iterm2 http://jixiuf.github.io/blog/00002-emacs-on-mac.html/#sec-8

1 个赞

谢谢, 科普了这些我完全不知道的知识, 我主要用guake, 次之gnome-shell, 看来是不可能修复的了. 之前vim也有过Alt key不兼容的问题, 是同一个问题吗?

确实这些键在vim下也是不分的,只是vim的tab key 和c-i没有冲突的场景