退格键在 Cygwin 中不起作用

退格键在 Cygwin 中不起作用

我刚刚安装了 Cygwin,但没有 BACKSPACE 功能,也就是说,当我按下 Backspace 键时,会出现一个空格。

我一直尝试在 Google 上研究这个问题,但没有找到任何结论性结论。

答案1

在我的情况下,创建空白 ~/.vimrc 后,退格键根本不起作用。进行以下更改后,它就可以正常工作了。

放:

设置 bs=2

在 .vimrc 中

发现于 http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html

答案2

对我有用:在 Windows 命令提示符中,键入

echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc

这会将其添加到.bashrc并且一切都可能正常运行!

答案3

我发现了一个解决方案出现上述类似问题。

只需再次运行 Cygwin 安装程序并重新安装termcapterminfo。如果您使用搜索框,您可以快速找到它们。不要为每个都显示“保留”,而是单击它以使其显示“重新安装”。您可能需要选中“隐藏过时”复选框才能term出现在搜索中。

我的 terminfo 文件夹完全不见了。不知道为什么。希望这对某些人有帮助。

答案4

当您设置 TERM 类型时,您是在告诉主机使用哪个 TERMCAP 在终端窗口内进行绘制。大多数 *NIX 主机不知道“cygwin”termtype 是什么,因此它们不知道如何进行屏幕字符操作,例如插入、删除、滚动、字体更改等。

如果在 telnet 或 SSH 连接到主机之前更改 CYGWIN 中的 TERM 变量,您将获得更好的结果:

在 CYGWIN 中:

d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1

d@suntest1's password:
Sun Microsystems Inc.  SunOS 5.8     Generic patch    October 2001

d   pts/1         test01    Fri   Oct 12  00:15   still logged in
$ echo $TERM
ansi
$_

主机现在知道您有一个 ANSI 终端类型,并且它可以使用它的 ANSI TERMCAP 文件来告诉它如何通信。

如果您无法使其工作,并且除了退格键之外大多数功能都正常工作,您可以重新编程您连接的主机上的“getty”来识别您想要的内容,方法如下(这是解决退格/删除问题的最古老、最常见和最通用的方法):

您通过 ssh 或 telnet 连接到主机,然后在主机中运行 stty 命令。如果您按下“BACKSPACE”键,但并没有后退,这是因为终端可能正在根据 TERM 类型寻找不同的字符。您无需费尽心思,只需在 CLI 或 $HOME 目录中的 .profile、.bashrc 或 .bash-profile 文件中手动设置退格定义,具体方法取决于您使用的 *NIX 类型。

因此,如果您按下 ^H(即 CONTROL-H)并且您的键后退,但是您按下 BACKSPACE 键,它就不会尝试使用 stty,如下所示:

stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]

大多数情况下它看起来像这样:

stty erase \^?[ENTER]

'\' 告诉它下一个字符将是一个不可打印的控制字符并接受它,而不是“解释”它。

按下 [ENTER] 后,您应该能够按 [BACKSPACE] 键并让其退格/删除您输入的任何内容。

您可以在您的 shell 中进行设置。

现在,如果您仍然使用 VI,有时翻译不起作用,您必须在 vi 中实际输入 ^H,但这没关系。

你还可以说:

stty 擦除 k[回车]

并且它实际上会将“k”翻译成擦除/删除字符。

-D

相关内容