【问题标题】:Emacs - Can't map C-[Emacs - 无法映射 C-[
【发布时间】:2014-04-28 13:11:07
【问题描述】:

我正在尝试在 Emacs 中映射 C-[ 以执行与 C-g 相同的操作。我试过这个:

(global-set-key "\C-[" 'keyboard-escape-quit)

但是在重新映射 C-[ 之后,Emacs 的行为很奇怪。例如, M-x 停止工作,如果我尝试重新映射 M-x 我收到以下错误:

错误:键序列 M-x 以非前缀键 ESC 开头

为什么会这样?有解决办法吗?

【问题讨论】:

  • Ctrl-[Escape,至少在某些终端中是这样。
  • 我使用的是 emacs gui,所以没关系,不是吗?此外,emacs 已经覆盖了一些终端命令,例如 Ctrl h...
  • M- 键绑定至少有 3 次击键:ESCC-[Alt。他们使用通用的键盘映射:M-x 和其他在其中定义。这是为了方便而创建的:用于没有Alt 或有限终端的键盘。

标签: emacs elisp key-bindings


【解决方案1】:

C-[ 与 Escape 键 ESC 相同。您可能不想重新绑定ESC,因为它在很多很多键绑定中用作前缀键。它在许多情况下实现了 Meta 键修饰符,这可能就是为什么您在重新绑定它(删除其前缀键行为)后说“Emacs 行为异常”的原因。请参阅 Emacs 手册,节点 User Input

至于“有解决方法吗?” -- 选择另一个键(不理会ESC)。

还有ESCC-g:参见Emacs 手册,节点Quitting(也是节点Menu Bar)。

【讨论】:

  • 这很奇怪,因为(global-set-key [escape] 'keyboard-escape-quit) 工作正常。我会等着看是否有人提出解决方案,如果没有,我会接受你的。谢谢
  • 这不是一个好主意,恕我直言。 Emacs 和 Emacs 库通常期望 ESC 在多个级别上表现得像它一样。你可以随意调整,但我不建议摆弄ESC。 IOW,IMO,不是解决方案,因为不是真正的问题(只是一种意见)。换句话说,真正的问题是什么?听起来这可能是XY problem。重新映射ESC 听起来像是在尝试解决方案,但导致这种尝试的问题是什么?
猜你喜欢
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2017-10-12
  • 2017-01-06
  • 1970-01-01
相关资源
最近更新 更多