我使用的是 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 示例作者:戴夫·卡佩拉。