退格键在Cygwin中不起作用


29

我刚刚安装了Cygwin,却没有BACKSPACE功能,即当我按下Backspace键时,我得到了一个空格。

我一直在尝试在Google上研究此问题,但没有发现任何结论。


您能否提供有关如何安装和调用Cygwin的更多详细信息,以及退格键在哪些地方无法正常工作?
ak2

1
我猜这正在外壳中发生。当您键入control-V后跟退格键时会发生什么?stty命令的输出是什么?
基思·汤普森

您有哪种键盘?美国,英国等
pjc50

您解决了吗?我现在可以在新的Cygwin安装中看到它,尽管以前可以使用。值得注意的是,您没有得到“空格”:无法将光标移回以擦除字符。您所看到的空间是应该踩在上一个角色上的空间。如果您按^ L,则可以看到退格键正在运行。这就是为什么stty不能解决问题的原因。Cygwin绑定到的CMD外壳几乎无法解释光标的移动。
SomeCallMeTim 2012年

Answers:


33

在我的情况下,创建空白〜/ .vimrc后,退格键根本无法工作。更改后使其生效

放:

设置bs = 2

在.vimrc中

http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html找到了


谢谢,这对我有用-以前,在Vim中,我的退格键一直沿行移回去,但是直到我开始打字时才清除字母。现在,它执行“常规”退格键。
罗伯特

4
很好的是,这个答案对其他用户有所帮助,但是在这种情况下,这并不是问题的解决方案,因为原始问题不是在询问vim。
Kelsin 2014年

这也解决了我使用光标键遇到的类似问题
Steve Paul

12

为我工作:在Windows命令提示符下,键入

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

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


1
我有TERM环境变量设置为msys通过Windows环境变量设置,建议在计算器上,以帮助git在Windows上的问题。只是将其重置为cygwinin .bashrc并没有帮助,但是TERM从Windows设置中删除该条目确实有帮助。感谢您为我指明正确的方向!
Florian Brucker 2013年

这解决了以下事实:cygwin64忽略了包含换行符的命令中的退格键。谢谢。
suanik

11

我找到了解决上述问题的方法。

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

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


1
我有一个自定义安装的ncurses,已将其删除。通过cygwin setup.exe删除并重新安装后,出现了此问题。我不想通过设置TERM变量来设置创可贴,而不是在发生意外之前起作用。重新安装terminfo(我找不到termcap)对我有用。谢谢!
Kelsin 2014年

很酷,有效,但是为什么呢?
Yordan Georgiev 2015年

5

编辑您的c:\ cygwin \ cygwin.bat

放置: SET TERM=cygwin

之前: bash --login -i


1
迄今为止最简单的修复。希望没有副作用。
2014年

1

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

如果在将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类型寻找其他字符。您可以根据需要或根据* NIX的风格,在CLI或$ HOME目录中的.profile,.bashrc或.bash-profile文件中手动设置退格定义,而不必深入研究所有这些内容使用。

因此,如果您按^ H(即CONTROL-H)并且您的密钥备份了,但是您按下了BACKSPACE键,则它不会尝试按以下方式使用stty:

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

大多数时候,它看起来像这样:

stty erase \^?[ENTER]

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

一旦按[ENTER],您应该可以按[BACKSPACE]键,并使其退格/删除您键入的内容。

您可以在外壳程序中进行设置。

现在,如果您仍然使用VI,有时翻译将无法进行,您必须在vi中实际键入^ H,但这没关系。

您可能已经说过:

固定删除k [ENTER]

并将字面意义上的“ k”转换为擦除/删除字符。

-D


0

好的,我在手动更新Cygwin安装时遇到了这个问题。无论如何,我找到了这篇文章,将我引到了我的安装解决方案。

较旧的cygwin有一个文件/etc/terminfo/c/cygwin,但是较新的cygwin希望该文件是/etc/terminfo/63/cygwin

一旦将“ cygwin”文件复制到此位置,bash shell的退格键就可以正常工作了,tab和其他键也是如此。


0

TERM变量更改为cygwin并添加SET TERM=cygwin.bat文件对我不起作用,但我已将其修复。在这里,我做了什么:在程序包管理器中,我选择安装xterm: X11 terminal emulator,在安装后,我将文件添加SET TERM=xterm.bat文件中(如上所建议),启动了终端,并在选项 -> 终端菜单中选择Type=xterm,然后重新启动了终端。退格键开始正常工作!

注意:如果您已经安装了cygwin,请再次运行安装程序并添加xterm软件包。

我在跑:

  • 操作系统= Windows 8(x64)
  • Cygwin setup.exe版本= 2.850(x64)
  • Mitty版本= 1.2-beta1(x86_64-pc-cygwin)


0

为我工作:在Windows命令提示符下,键入

(echo; echo "export TERM=cygwin") >> ~/.bash_profile

这会将其添加到.bash_profile(不是.bashrc,这对我不起作用,并且有一个换行符)


0

经过2天的时间在线阅读资料。我发现这对我有用。我不知道这种情况是否每个都匹配。但是感谢Yuksel,这对我来说就像一种魅力

问题出在“ termInfo”文件上,他建议的步骤

  1. 通过输入CygWin Terminal确认问题是否与终端相关,这应该给出(忽略警告)

    less my_session.log

警告:终端功能不完全

  1. 通过在CygWin Terminal中键入以下代码,获取与“ TermCap”相关的路径或目录的信息

    infocmp -C

你应该得到

infocmp:无法打开terminfo文件/ usr / share / terminfo / 63 / cygwin

或者,您也可能会得到一些诸如“通过infocmp重构...”之类的文字开头的信息。

  1. 在CygWin Terminal中运行以下代码以运行诊断以获取有关文件保存路径的更多详细信息

    cygcheck -s

应该像下面的文字一样回应您

Cygwin配置诊断

...

C:/ cygwin /系统二进制,noacl

C:/ cygwin / bin / usr / bin系统二进制文件,noacl

C:/ cygwin / lib / usr / lib系统二进制文件,noacl

C:\ cygwin \ etc \ terminfo / usr / share / terminfo系统二进制文件,noacl

cygdrive前缀/ cygdrive用户二进制,noacl,posix = 0,自动

...

  1. 签出类似于

C:\ cygwin \ etc \ terminfo / usr / share / terminfo系统二进制文件,noacl

从输出中,您从第三步得到。现在将/ usr / share / terminfo中存在的所有文件和文件夹复制到文件夹C:\ cygwin \ etc \ terminfo-注意:根据安装情况,此文件夹可能与您的文件夹不同


0

请按照下面的图片 在此处输入图片说明

  1. 右键单击Cygwin窗口中的任何位置
  2. 请点击 options
  3. 点击Keys标签
  4. Backarrow sends ^H
  5. 按应用。

这是唯一对我有用的方法,尤其是因为如果您必须SSH到服务器(并非所有修复程序都可以使用),我曾经将其添加stty erase ^?到.bashrc中,但这只能在80%的时间内解决了该问题。


-1

从未遇到过您的问题。尝试安装终端仿真器Mintty(http://code.google.com/p/mintty/)。

可通过Cygwin安装程序使用。Cygwin的最佳终端。


这没有帮助。
2011年

甚至卡在同一问题上,并且薄荷味的退格功能也无法正常工作。当我同时在薄荷终端和cygwin终端上按退格键时,我就获得了空间
Rachel

@Rachel您是否解决了这个问题?我在重新安装Cygwin时看到相同的问题。:(
SomeCallMeTim 2012年

@SomeCallMeTim:我可以通过使用Minty来解决此问题,cygwin的行为有时会非常奇怪。
雷切尔2012年

@Rachel谢谢,尽管我发现我的问题是Cygwin安装缺少一些重要文件(例​​如/ usr / lib / terminfo)。我不知道他们为什么失踪;找到其他遇到该问题的人,进入安装程序,并告诉terminfo和termcap重新安装,一切正常。
SomeCallMeTim 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.