emacs - 在 emacs 中无法在终端模式下工作的 block 绑定(bind)?

标签 emacs ssh keyboard-shortcuts putty terminal-emulator

一些在 GUI 模式下工作的 emacs 键盘绑定(bind)在终端模式下不起作用 because the terminal only knows how to send ASCII control codes .当我将键绑定(bind)到非 ASCII 控制代码时,有没有办法让 emacs 提示,所以我会意外停止这样做?我只是偶尔在终端上运行 emacs,而且通常只是远程运行,而且通常只是因为某些东西坏了,这意味着我最终会在最糟糕的时候发现这种糟糕的情况。

我也有过远程处理的经验,尤其是从一个操作系统到另一个操作系统(例如 Solaris -> Linux),甚至修改键也会被重新映射(esc <-> ctrl 被交换,或者右 alt 有效但左 alt 无效)。有什么方法可以检测到这种情况何时发生并适本地交换我的键盘绑定(bind)?

基本上:每次我在终端远程使用 emacs 时,我都会得到与 GUI 不一致的体验,这很糟糕,我该如何更改我的 emacs 使用以防止这种情况发生。

最佳答案

我不知道这样做的好方法:首先,终端只能发送 ASCII 控制代码是不正确的,因为它们可以通过转义序列对几乎任何东西进行编码(例如,xterm 发送一个特殊的转义序列,例如, C-M-up,然后 Emacs 可以识别)。因此,取决于终端能够发送到 Emacs 的事件集(以及 Emacs 能够识别的事件)取决于终端。

如果您想真正安全,您可以将自己限制在将键序列描述为字符串(不是向量,也不是通过 kbd 构建的东西)的绑定(bind),这基本上意味着只有 ASCII 字符(包括控制序列)组合与元。

关于emacs - 在 emacs 中无法在终端模式下工作的 block 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925852/

相关文章:

linux - LDAP - 跨多个 VM 的 SSH 脚本

r - 将 RStudio 中的选择发送到终端的键盘快捷键

regex - 在 Emacs 中搜索简单的变量名称,例如 'c' 或 'x'

emacs - 如何在网络模式下缩进内联 Javascript?

sqlite - 如何使用elisp创建一个sqlite特定的shell?

security - 非对称 key 容器的相互转换(例如 : X. 509、PGP、OpenSSH)

linux - 在 linux 终端中如何使用 gnome-terminal 打开 ssh session 并在 ssh session 中键入 bash 命令

c# - 如何在表单应用程序中动态更改快捷键?

visual-studio - "quick fix"的 Visual Studio 快捷方式

Emacs 命令将代码缩进 4 个空格以格式化粘贴到 stackoverflow 帖子中