Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止赢得';在emacs中是否不能在终端模式下工作?_Emacs_Ssh_Keyboard Shortcuts_Putty_Terminal Emulator - Fatal编程技术网

阻止赢得';在emacs中是否不能在终端模式下工作?

阻止赢得';在emacs中是否不能在终端模式下工作?,emacs,ssh,keyboard-shortcuts,putty,terminal-emulator,Emacs,Ssh,Keyboard Shortcuts,Putty,Terminal Emulator,某些在GUI模式下工作的emacs键盘绑定在终端模式下无法工作。当我将一个键绑定到一个非ASCII控制代码上时,有没有办法让emacs抱怨,这样我就会意外地停止这样做?我只是偶尔在终端上运行emacs,而且通常只是远程运行,而且通常只是因为某些东西坏了,这意味着我最终会在最糟糕的时候发现这种讨厌的东西 我也有过在中远程处理的经验,特别是从一个操作系统到另一个操作系统(例如Solaris->Linux),其中甚至修改键都会被重新映射(esc-ctrl键被交换,或者右alt键工作,而左alt键不工作

某些在GUI模式下工作的emacs键盘绑定在终端模式下无法工作。当我将一个键绑定到一个非ASCII控制代码上时,有没有办法让emacs抱怨,这样我就会意外地停止这样做?我只是偶尔在终端上运行emacs,而且通常只是远程运行,而且通常只是因为某些东西坏了,这意味着我最终会在最糟糕的时候发现这种讨厌的东西

我也有过在中远程处理的经验,特别是从一个操作系统到另一个操作系统(例如Solaris->Linux),其中甚至修改键都会被重新映射(esc-ctrl键被交换,或者右alt键工作,而左alt键不工作)。是否有任何方法可以检测何时发生这种情况并适当地交换键盘绑定


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

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


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

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


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

当我远程登录并定期运行emacs时,你知道有没有办法让我知道哪些是或哪些是不受支持的?例如,当我在C-/中远程操作不起作用时(它被认为相当于C-),但我不知道如何预先检测到这一点,除非通过尝试和错误的方式检测我的所有快捷方式,如果有办法找到我需要重新映射的完整快捷方式列表,我至少可以为我的远程工作设置修复它。要知道什么可行,什么不可行,您需要弄清楚您使用的是哪个终端仿真器,然后查看它的文档、定制和/或源代码。你可以知道
C-/
使用
M-:“\C-/”RET
是有风险的,它会告诉你它不是一个有效的字符串,也就是说,它不是一个ASCII控制键。啊,我希望发现一些emacs lisp+termcap魔术的组合,能够解决这个问题。我可能会尝试使用我自己的,但这需要一段时间,因为我目前了解jack关于termcap的情况。如果您查看
输入解码映射
,您将看到将转义序列映射回其真实含义的规则。这是由Emacs基于termcap信息构建的,因此它将让您知道什么是有效的(除了ASCII控件和Meta+ASCII之外,它应该在任何地方都有效)。您知道当我远程登录并在termal中运行Emacs时,是否有办法确定哪些是或不受支持的?例如,当我在C-/中远程操作不起作用时(它被认为相当于C-),但我不知道如何预先检测到这一点,除非通过尝试和错误的方式检测我的所有快捷方式,如果有办法找到我需要重新映射的完整快捷方式列表,我至少可以为我的远程工作设置修复它。要知道什么可行,什么不可行,您需要弄清楚您使用的是哪个终端仿真器,然后查看它的文档、定制和/或源代码。你可以知道
C-/
使用
M-:“\C-/”RET
是有风险的,它会告诉你它不是一个有效的字符串,也就是说,它不是一个ASCII控制键。啊,我希望发现一些emacs lisp+termcap魔术的组合,能够解决这个问题。我可能会尝试使用我自己的,但这需要一段时间,因为我目前了解jack关于termcap的情况。如果您查看
输入解码映射
,您将看到将转义序列映射回其真实含义的规则。这是由Emacs基于termcap信息构建的,因此它将让您知道什么是有效的(除了ASCII控件和Meta+ASCII之外,它应该在任何地方都有效)。