我刚刚安装了 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 安装程序并重新安装termcap
和terminfo
。如果您使用搜索框,您可以快速找到它们。不要为每个都显示“保留”,而是单击它以使其显示“重新安装”。您可能需要选中“隐藏过时”复选框才能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