如何退格或删除?

时间:2016-01-02 12:55:12

标签: powershell docker kitematic

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

我错过了什么吗?

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:8)

当通过ssh连接时,临时解决方案将tty erase命令设置为终端密钥在终端中发送的任何内容。

stty erase ^H

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

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

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

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

答案 2 :(得分: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

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