MobaXterm 退格键发送 ^H

MobaXterm 退格键发送 ^H

长问题: 我正在尝试通过 Telnet 发送大量请求并查看服务器如何反应来测试我的简单 HTTP 服务器。但是当我输入错误并按 Backspace 键删除前一个字符时,MobaXterm 会发送该字符,^H而不是从字符串中删除该字符。当我按 Shift+Backspace 键时,一切都按我想要的方式运行,但过了一段时间,这变得非常烦人……那么,有没有一种解决方案可以改变 Backspace 的功能?

简短问题: 是否可以使用退格键删除一个字符而不是发送^H

答案1

MobaXterm 还提出了一个复选框设置“Backspace 发送 ^H”,您可以尝试切换(在 MobaXterm 全局设置 --> “终端”选项卡中)。

如果您正在使用已保存的会话,则必须编辑此会话,转到“终端设置”选项卡并切换“Backspace 发送 ^H”复选框。

答案2

标有“退格”的键存在争议。从技术上讲,它應該发送^H只是因为这是 ASCII 控制字符的名称。其他人则有所不同,因为他们的期望受到此功能历史的影响(请参阅为何我的删除键不起作用?)。

在讨论中你说你打字,通常的含义(缺乏明确说明)是您启动了一个终端,然后在终端内运行程序。对于这种情况,有一个相应的终端初始化,例如,使用 shell 和程序,例如stty。这在本地机器上运行(您正在输入的地方)。MobaXterm提供 stty自版本 3.2(2011-05-30)起。

鉴于,如果 MobaXterm 发送^H,您的终端初始化应该使用

stty erase \^H

例如该命令起什么作用stty erase ^H

另一方面,你可以已经(在问题中没有明显体现)构建了一种情况,其中终端以一种阻止使用的方式启动,stty以使应用程序和终端保持一致。或者您可能有其他原因需要更改退格键的行为。PuTTY(如 xterm)为此提供了两种机制:

  • 一个(最初在 rxvt 中实现)允许您使用修饰符在 ASCII 退格键(BS = 8 = )和删除键(DEL = 127,通常显示为)shift之间切换从“退格键”发送的代码。^H^?
  • 另一个是终端配置(在键盘部分终端部分)。

xterm 提供了 PuTTY 似乎缺乏的第三种机制(参见XTerm 控制序列):

CSI ? Pm h
      DEC Private Mode Set (DECSET).
            Ps = 6 7  -> Backarrow key sends backspace (DECBKM).

如果 PuTTY 确实实现了这一点,您的应用程序可以直接设置终端的行为。相反,在初始化期间,PuTTY 会检查其配置的初始状态,并且(取决于平台)还会检查(如 xterm)设备中设置的终端模式,并选择退格键与删除键行为,您可以根据需要进行调整或修改。

答案3

在 MobaXterm 中,有一个选项可以更改退格键的行为。(以下答案基于 MobaXterm personal v11.1)

该选项名为:“Backspace 发送 CTRL-H”

该选项仅显示在会话特定的配置中,而不是全局设置中:在 Moba 中创建/编辑 SSH 类型的新/现有用户会话,并访问其设置。在“终端设置”选项卡下,取消选中“Backspace 发送 CTRL-H”,保存并重新加载。

可以针对所有会话改变行为吗?我还没有找到一种方法来全局更改行为。MobaXterm 使用下面的 Putty 代码,它确实有一个与退格键行为相对应的切换设置,但不幸的是,这并没有在 MobaXTerm 的全局设置窗口中显示。免费版本中也没有。

Moba 专业版确实提供了一个单独的配置工具,可以向您显示更多配置选项。我怀疑这可能转化为 MobaXTerm.ini 设置。我无法验证。

替代方案:更改服务器上的行为 如果您从未连接到任何用户会话的本地终端登录ssh <server>,则全局设置适用——即发送^H。这会导致编辑器(即 emacs)和其他使用 readline 的程序(如 telnet)出现一些问题。一种解决方法是通过发出 stty 命令修补远程站点上的终端行为(在 debian 上,这随软件包一起提供coreutils):

# interpret incoming ^H as backspace/erase
stty erase \^H

但是,如果您通过其他类型的终端登录,我不建议将其添加到 ~/.bashrc。因此,用户会话配置键是一种更好的方法。

答案4

距离更新已经有一段时间了,但是 MobaXterm 21.3 改变了几件事:

  1. 如果您转到“设置->配置->终端”,您将看到现在有一​​个全局设置。
  2. 如果您更改此行为,请注意,如果您希望其配置相同,则需要手动更改任何已创建的会话。每个保存的会话“设置->终端设置选项卡->“退格键发送 ^H”也在此处取消选中。

相关内容