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

cwd*_*cwd 7 vim ssh solaris keyboard vi

我在 Solaris 10 上,默认情况下vi安装了 Solaris 2.5.0 版本 SVR4.0。

系统设置为当我 ssh 到它时Control+H会退格,并退格输出^?

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

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

compatible: No such option - 'set all' gives all option values
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*edy 6

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

通过添加

:map! ^? ^H
Run Code Online (Sandbox Code Playgroud)

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

:map! ^[OA ^[ka
:map! ^[OB ^[ja
:map! ^[OC ^[la
:map! ^[OD ^[ha
Run Code Online (Sandbox Code Playgroud)

请记住,所有这些“转义码”都不是通过简单地为“^”字符键入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 文件有多强大的示例,请查看Dave Capella 的这个 .exrc 示例。