【问题标题】:How to backspace or delete?如何退格或删除?
【发布时间】:2016-01-02 12:55:12
【问题描述】:

在 Windows 10 中,当我在 Windows 上启动 MS PowerShell 以通过 Kitematic 中的容器进行 ssh 时,我注意到我无法退格或删除,而是得到 ^H 用于退格,而不是实际删除前一个字符。

我错过了什么吗?

【问题讨论】:

    标签: powershell docker kitematic


    【解决方案1】:

    接受的答案有效,但我想我要指出的是,如果您启动 bash 而不是停留在 sh 中,那么一切正常,因此只需在 # 提示符下键入 bash,您就会获得所需的功能。

    【讨论】:

    • 这应该是公认的答案,因为它修复了许多其他接口问题。
    • 这应该完全是公认的答案!完美运行!
    【解决方案2】:

    临时解决方案是将 tty erase 命令设置为通过 ssh 连接时在终端中发送的退格键。

    stty erase ^H
    

    上面的^H 序列不是文字文本,而是通过按ctrl-v 然后按退格 输入的控制字符。

    您可以将此命令添加到 docker VM 上的 .bashrc 文件中,以便在每次连接时自动设置它。在终端中编辑文件时,您必须输入与上述相同的转义序列的字符串。

    .bashrc 中执行此操作将为所有 VM 登录设置erase,因此您可能会对其他连接终端类型的擦除工作方式产生负面影响。

    您通常会在客户端而不是服务器上解决此问题。 For example, PuTTY has a specific setting for this。我不确定为什么您的 powershell/ssh 组合没有正确映射擦除,因为 Docker 通常开箱即用。检查启动 docker/ssh 终端时 Docker 快捷方式的作用,并在启动终端以手动连接时执行相同操作。

    【讨论】:

    • “krystan honour”的答案更好,因为它允许正确输入到终端,而没有像^H 这样的奇怪输出。请参阅下面的答案。
    【解决方案3】:

    如果有人在这个后期偶然发现这一点 - 类似的情况 - 使用 MS POWERSHELL openSSH 实现。远程处理到 AIX/ksh。

    必须将 TERM 设置为 vt100(已编辑 .profile)以使 vi 以不加重的方式工作:

    TERM=vt100  
    EXPORT TERM
    

    然后将此行添加到我的.profile.

    stty erase '^?' echoe
    

    erase '^?' 占用 windows ssh 提供的退格键。

    echoe 强制编辑显示在屏幕上。

    没有echoe 我会输入

    $123456[backspace][backspace][backspace][backspace][enter]  
    
    $12 is not recognized as a command
    

    在输入行 - 每个退格都附加到行中,并在框中带有一个小问号。

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2011-10-05
      • 1970-01-01
      • 2012-04-29
      • 2020-12-17
      • 1970-01-01
      相关资源
      最近更新 更多