切换 VI 使用退格键而不是 Control+H 退格?

切换 VI 使用退格键而不是 Control+H 退格?

我使用的是 Solaris 10,默认情况下vi安装版本 SVR4.0、Solaris 2.5.0。

系统的设置是这样的,当我 ssh 到它时,它Control+H会退格,并且退格输出^?

我添加了stty erase '^?'.profile以便在终端中退格键现在可以正常工作。但是,当我使用 vi 时,它仍然输出该^?字符。

通常我会输入:set nocompatible来解决这个问题,但它给了我

compatible: No such option - 'set all' gives all option values

set all给我

noautoindent            nomodelines                     noshowmode
autoprint               nonumber                        noslowopen
noautowrite             nonovice                        tabstop=8
nobeautify              nooptimize                      taglength=0
directory=/var/tmp      paragraphs=IPLPPPQPP LIpplpipnpptags=tags /usr/lib/tags
noedcompatible          prompt                          tagstack
noerrorbells            noreadonly                      term=xterm
noexrc                  redraw                          noterse
flash                   remap                           timeout
hardtabs=8              report=5                        ttytype=xterm
noignorecase            scroll=33                       warn
nolisp                  sections=NHSHH HUuhsh+c         window=66
nolist                  shell=/bin/ksh                  wrapscan
magic                   shiftwidth=8                    wrapmargin=0
mesg                    noshowmatch                     nowriteany

我猜测这个版本vi太旧了,我需要更新的版本或者vim如果我想使用set nocompatible,但我想知道有没有另一种方法可以vi使用退格键进行退格而无需加载vim?

答案1

好的。所以我们解决了退格键不起作用的问题。

通过增加

:map! ^? ^H

到您的 .exrc 文件。要以类似的方式映射箭头键,您可以将以下内容添加到同一个 .exrc 文件中。

:map! ^[OA ^[ka
:map! ^[OB ^[ja
:map! ^[OC ^[la
:map! ^[OD ^[ha

请记住,所有这些“转义码”不是通过简单地键入“^”字符的shift+来创建的6,而是通过按以下键创建的:

退格并删除:

  • ^? = control + v+delete
  • ^H = control + v+control + h

向上箭头:

  • ^[OA = control + v+up arrow
  • ^[ka = control + v+ esc+ k+a

向下箭头:

  • ^[OB = control + v+down arrow
  • ^[ja = control + v+ esc+ j+a

右箭头:

  • ^[OC = control + v+right arrow
  • ^[la = control + v+ esc+ l+a

左箭头:

  • ^[OD = control + v+left arrow
  • ^[哈= control + v+ esc+ h+a

.exrc 文件中的任何注释行都必须用 标记",而不是#。并且您不能在 .exrc 文件中留下任何空行,否则第一个空行将停止处理您的 .exrc。

一旦这些到位,vi 将开始感觉更像是为人类使用而设计的。 :)

有关 .exrc 文件的强大功能的示例,请查看这个 .exrc 示例作者:戴夫·卡佩拉。

相关内容