终端下键位问题求教

看了一年学会使用emacs 现在在看子龙山人的视频课

遇到了一个问题 想问论坛大神怎么解决 平常用的服务器比较多 都是用终端连上去 没有用GUI 终端下的部分快捷键 无法识别 我用xshell比较多 eg: C-; C-= 都无法识别 部分插件就是这些快捷键 有没有什么办法可以使终端支持一下

  1. 求你们服务器给开X forward
  2. 换个能打的终端,比如fbterm或者mlterm(我不用,不敢拍胸口保证)
  3. Rebind these key,就算失去了C-i C-m 等等 Emacs的世界依旧宽广
  4. 成为暗界将军
1 个赞

三个要素要协调好:

  1. 本地电脑运行环境的系统快捷键
  2. 终端软件的终端类型/按键序列的设置
  3. 服务器端的TERM环境变量

如果本地电脑是windows的话,最好把windows的热键全部禁用之后再进行配置,否则会有很多冲突

终端软件按键是比较麻烦的,每个键对应的ansi序列要都搞明白是挺头痛的.

1 个赞

这就是我用evil的原因,虽然vim的modal edit不够随心所欲,但是大部分时候是非破坏性和高兼容的

如果用iterm2可以用这个办法解决,linux下估计也有类似的解决在思路

windows 下可以借助autohotkey 来实现类似的逻辑 比如针对PuTTY mintty等的escape sequence

用tramp,从gui的emacs远程连接,进去还能跑eshell,感觉很够用了

造成按键没有按预期工作的原因只有两个:

  1. 被本地操作系统截取.
  2. 没有转换为正确的ansi控制码序列.

第一种情况需要修改本地系统何终端软件的配置,避免冲突

第二种情况需要设置本地终端类型和远程系统TERM环境变量

iTerm 终端下 Escape 无法从 insert state 转到 normal state。。

最 恶 大 将?

很久之前提问过,可参考