VIM 用 ^ 代替退格键?

VIM 用 ^ 代替退格键?

每当我在 VIM 中输入退格键时,编辑器都会插入^?.我已经编辑.vimrcset backspace=indent,eol,start但没有成功。set backspace=2也没起作用。

我读到您需要编辑 /etc/X11/... 中的 XTerm 文件,但该文件夹和文件不存在。

这不是重复的,因为我已经尝试过之前建议的解决方案,但它不起作用。

答案1

/etc/X11/app-defaults/XTerm可以进行编辑,但如果您没有该文件,则可能您正在使用不同的终端。

问题不在于您在 中使用的设置vim,而是终端描述和终端在“退格键”发送的内容上不一致。

通常“退格”与值相同stty erase,您可以使用 看到它stty -a,例如,

~ (101) stty -a
speed 38400 baud; rows 40; columns 80; 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
-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

如果stty显示^H并且终端实际发送^?(ASCII DEL 或 127),则vim可能会感到困惑。

在 vim 的帮助文件中,它声称如果你把

:fixdel

在你的.vimrc,它能够做正确的事

:fix[del]               Set the value of 't_kD':
                                't_kb' is     't_kD' becomes    ~
                                  CTRL-?        CTRL-H
                                not CTRL-?      CTRL-?

                        (CTRL-? is 0177 octal, 0x7f hex) {not in Vi}

                        If your delete key terminal code is wrong, but the
                        code for backspace is alright, you can put this in
                        your .vimrc:                  
                                :fixdel
                        This works no matter what the actual code for
                        backspace is.   

相关内容