11

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

我错过了什么吗?

4

3 回答 3

12

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

于 2016-02-12T22:43:12.693 回答
10

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

stty erase ^H

上面的^H序列不是文字文本,而是按ctrl-v和 then输入的控制字符backspace

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

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

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

于 2016-01-03T00:04:09.330 回答
1

万一有人在这个后期偶然发现 - 类似的情况 - 使用 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

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

于 2020-10-22T20:23:06.800 回答