Я знаю, що в vim можу додати
set nocompatible
в .vimrc
яких слід уникати , що клавіші зі стрілками відображення А, В, С, D в режимі вставки.
Але я використовую vi Версія 4.0 (крупка) 12/25/06 .
Як я можу отримати таку саму поведінку?
== EDIT == (1)
Я використовую версію vi з Arch Linux , побудовану з цього сховища CVS (остання фіксація 24 лютого 2007 р.) Із наступною командою:
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 та зберегти-dir.patch .
== EDIT (2) ==
Проблеми трапляються в LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 і xterm 320-2, але не в urxvt v9.21, ні у віртуальних консолях Linux.
== EDIT (3) ==
У відповідності з Unix Specification Single ліва стрілка, стрілка вниз, стрілка вправо, стрілка вгору , відповідають відповідно до наступних capname: kcub1
, kcud1
, kcuf1
і kcuu1
. Порівняння записів terminfo з 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'.
Зміна Xterm Terminfo записи по substituing '\EOD'
, '\EOB'
, '\EOC'
, '\EOA'
на '\E[D'
, '\E[B'
, '\E[C'
, '\E[A'
повинні вирішити цю проблему , але це хороша ідея? Можливо, це порушить використання інших програм стрілками?
TERM
в базі даних termcap
або terminfo
баз даних не відповідає синхронізації з кодами, створеними клавіатурою. Рішення полягає не в тому TERM
, щоб змінити , а з’ясувати, чи vi
пов’язаний ваш termcap
або проти terminfo
, знайти ключові коди, випромінювані клавіатурою, і виправити відповідну базу даних відповідно. Скарги на sysadmin теж можуть спрацювати.
terminfo
.