我知道在vim中我可以添加
set nocompatible
在.vimrc
以避免箭头键显示A,B,C,在插入模式d。
但是我正在使用vi 版本4.0(gritter)12/25/06。
如何获得相同的行为?
==编辑==(1)
我正在使用Arch Linux的vi版本,该版本是通过以下命令从此CVS存储库(最后一次提交,2007年2月24日)构建的:
make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8"
并使用以下三个补丁:fix-tubesize-short-overflow.patch,navkeys.patch和preserve-dir.patch。
==编辑(2)==
这些问题发生在LXTerminal 0.2.0,白蚁10-1,Tilda 1.2.4-1,终结者0.98-1和xterm 320-2中,但在urxvt v9.21和Linux虚拟控制台中都没有。
==编辑(3)==
根据单一Unix规格左箭头,向下箭头键,右箭头,向上箭头分别对应于以下capname: ,,kcub1
和。比较这些capterm中的terminfo条目,可以得出:kcud1
kcuf1
kcuu1
xterm
rxvt-unicode-256color
$ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1'
kcub1: '\EOD', '\E[D'.
kcud1: '\EOB', '\E[B'.
kcuf1: '\EOC', '\E[C'.
kcuu1: '\EOA', '\E[A'.
通过substituing修改xterm的terminfo项'\EOD'
,'\EOB'
,'\EOC'
,'\EOA'
由'\E[D'
,'\E[B'
,'\E[C'
,'\E[A'
要解决这个问题,但它是一个好主意吗?也许会破坏其他程序的箭头键用法?
2
我认为这是由vi(m)<->终端交互引起的,因此您也可以尝试一些终端相关的解决方法/配置。
—
VanLaser
上面@VanLaser所说的翻译:您
—
佐藤桂2015年
TERM
在termcap
或terminfo
数据库中输入的当前信息与键盘产生的代码不同步。解决方案不是更改TERM
,而是查找您vi
是否与termcap
或链接terminfo
,找到键盘发出的键码,并相应地修复相应的数据库。向sysadmin投诉也可以。
我都说了吗 有时我会给自己一个惊喜:)(当然,我所知道的只是与终端相关)。
—
VanLaser
此版本的vi是使用ncurses构建的,然后应使用
—
Ortomala Lokni 2015年
terminfo
。
您看到这些提示了吗?也许其中一些有用。
—
鲍里斯·塞列布罗夫'16