Я знаю, что в 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.