在Vim中,当我在插入模式下按下退格键时,它留下^?字符,并且不删除假设要删除的字符。
我在我的.vimrc中有以下
Syntax on set number set expandtab set incsearch set nocompatible set backspace=indent,eol,start fixdel
这也发生在命令模式。当我错误地键入W而不是w保存,我按退格键,它给我以下:
:W^?
任何想法什么是错的,如何解决它?
更新:在发布此问题到SO,我做了一个基本的google搜索,并尝试所有的建议,从搜索结果的第一页,但不成功。
@strcat我使用vim版本7.0.237,KDE控制台1.6.4,Linux 2.6.18 x86_64机器。
@graywh w.r.t cat -v,删除,我得到^ [[3〜和退格,我得到^?
stty -a的输出如下
speed 38400 baud; rows 38; columns 194; line = 0; intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
^?是删除字符;退格字符为^ H。只有其中一个被您的终端识别为“擦除”,这由终端设置stty确定。 (bash和其他shell理解这是一个问题,做特殊的事情来识别两者)
如果你的终端模拟器(ssh,putty,xterm,任何)不同意你的终端设置,那么你会看到这种行为。通常它是正确的默认情况下,但很多时候人们会把stty命令在他们的.bashrc打破的东西。
你可能有一些像stty擦除^ H在你的bashrc。如果你这样做,摆脱它,或更改您的终端设置有退格发送^ H而不是DEL(^?)
你也可以通过vim映射来解决这个问题,但这是忽略了基本的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。