在终端Vim(Cygwin)中如何使用退格键

11

我在Windows 8上运行默认的cygwin安装,但无法使用退格键删除字符 - 我期望在按下退格键时将字符覆盖为空格。

我已经尝试过

set backspace=2 "
set backspace=indent,eol,start
:fixdel

似乎什么都不起作用。

无论是 :verbose imap <BS> 还是 :verbose imap ^H 都返回了 No mapping found


Vim是否能够捕捉到退格键?我使用“:echo getchar()”来进行这种检查。尝试运行该命令并在键盘上按下一个键 - 空格或其他键。您应该会看到一个数字(键码)出现。如果您这样做并按退格键会发生什么? - Pandu
是的,光标确实会后退。当您退出插入模式时,字符将从视图中删除。尝试使用 :echo getchar() 命令时,我收到以下错误提示:“E319: 抱歉,此版本不支持该命令”。 - Warrick FitzGerald
所以明确一下,我进入插入模式..输入123456...按三次退格键。这将把光标向后移动3个空格。当我按ESC键退出插入模式时,字符456被删除..我希望在插入模式下删除它们。 - Warrick FitzGerald
实际上发生的是字符被删除了,但你的cygwin终端没有刷新。不知道如何解决这个问题。但如果你使用gvim,应该就没问题了。 - Pandu
同样的事情,在这里,Windows XP,Vim 7.3。 - huff
显示剩余2条评论
6个回答

21

将这些设置相加:

:set nocompatible
:set backspace=2

2

最近我在Windows 7上的Cygwin安装中遇到了一些奇怪的问题。按下退格键时,Cygwin会将其解释为一个空格。

幸运的是,这个问题很容易解决。最简单的方法(在测试过程中并不总是有效)是通过setup.exe重新安装terminfo和termcap,如此提到的:Backspace does not work in Cygwin。如果你没有安装termcap,请安装它,但一定要正确地重新安装terminfo。最好情况下,这就是让退格键重新工作所需要做的全部。

如果不行,你可能需要从你的主文件夹中删除.bashrc,例如/cygwin/home/you/.bashrc。然后,只需确保重新安装terminfo和termcap即可。这对我总是有效的。

享受你的退格键 :)


0

0
在命令模式下,您是否考虑过只需按大写字母“X”而不是退格键?这将删除左侧的一个字符,非常类似于您期望的退格行为。

0

我刚刚为自己解决了这个问题,想着我可能有一个正确的答案可以给你:

type -a vim 

这让我知道vim是vi -N的别名。如果你看到了这个,那么请去你的setup-x86_64.exe(Cywgin安装程序,在32位系统上可能不同)并安装完整的Vim包。

免责声明:我认为这是一个症状,有多种根本原因。因为这个问题已经存在5年了,仍然没有被接受的答案,所以我添加了我的答案。


-1
我在vi命令行中使用了这个命令:set nocp(然后按回车键)。 但是,每次启动vi都需要执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接