Я знаю, что в VIM я могу добавить
set nocompatible
во .vimrc
избежание отображения клавиш со стрелками A, B, C, D в режиме вставки.
Но я использую vi Версия 4.0 (gritter) 25.12.06 .
Как я могу получить такое же поведение?
== РЕДАКТИРОВАТЬ == (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-tubeize-short-overflow.patch , navkeys.patch и preserve-dir.patch .
== РЕДАКТИРОВАТЬ (2) ==
Проблемы возникают в LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1 и xterm 320-2, но не в urxvt v9.21 и не в виртуальных консолях Linux.
== РЕДАКТИРОВАТЬ (3) ==
В соответствии с Unix Specification Single левая стрелка, стрелка вниз, стрелка вправо, стрелка вверх , соответствуют соответственно следующим capname: kcub1
, kcud1
, kcuf1
и kcuu1
. Сравнение записей terminfo от xterm
и rxvt-unicode-256color
для этих capterms дает:
$ 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
, найти коды клавиш, излучаемые клавиатурой, и соответствующим образом исправить соответствующую базу данных. Жалобы системному администратору тоже могут сработать.
terminfo
.