在 Windows 10 中,当我在 Windows 上通过 Kitematic 中的容器启动 MS PowerShell 以 ssh 时,我注意到我无法退格或删除,而是得到 ^H 用于退格,而不是实际删除前一个字符。
我错过了什么吗?
在 Windows 10 中,当我在 Windows 上通过 Kitematic 中的容器启动 MS PowerShell 以 ssh 时,我注意到我无法退格或删除,而是得到 ^H 用于退格,而不是实际删除前一个字符。
我错过了什么吗?
接受的答案有效,但我想我会指出,如果您启动 bash 而不是停留在 sh 中,那么一切都会有效,因此只需在 # 提示符下键入 bash ,您将获得所需的功能。
临时解决方案是将 ttyerase
命令设置为通过 ssh 连接时在终端中发送的退格键。
stty erase ^H
上面的^H
序列不是文字文本,而是按ctrl-v和 then输入的控制字符backspace。
您可以将此命令添加到.bashrc
docker VM 上的文件中,以便在每次连接时自动设置它。在终端中编辑文件时,您必须输入与上述相同的转义序列的字符串。
这样做.bashrc
将为所有登录到 VM 设置,因此您可能会对擦除对连接的其他终端类型的工作方式产生负面影响erase
。
您通常会在客户端而不是服务器上解决此问题。例如,PuTTY 对此有一个特定的设置。我不确定为什么您的 powershell/ssh 组合没有正确映射擦除,因为 Docker 通常开箱即用。检查启动 docker/ssh 终端时 Docker 快捷方式的作用,并在启动终端以手动连接时执行相同操作。
万一有人在这个后期偶然发现 - 类似的情况 - 使用 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
在输入行上 - 每个退格都附加到行中,并在框中带有一个小问号。