Вряд ли это как-то связано с латексом.
Для клавиш со стрелками нет односимвольных кодов; вместо этого они отправляют контрольные последовательности. Например, клавиша со стрелкой вверх обычно отправляет ESC [ A
vi
использует termcap
или terminfo
(скорее, последний в наши дни) для интерпретации этих последовательностей в зависимости от того, какой терминал он использует, указанный в переменной среды $TERM
. Вы можете увидеть эти последовательности, например, набрав control-V
а затем стрелку вверх в приглашении оболочки (control-V
говорит, что нужно буквально интерпретировать следующий символ).
Очевидно, у vi
недостаточно информации, чтобы понять, что такое ESC [ A
Есть также альтернативный набор кодов; например, стрелка вверх может отправлять ESC O A
. В xterm
этот режим можно переключать с помощью нажатия средней кнопки мыши, включая или отключая "Клавиши курсора приложения".
Также обратите внимание, что вы можете использовать h
, j
, k
и l
для левого, нижнего, верхнего и правого соответственно. Это может быть проще в использовании, чем клавиши со стрелками, когда вы привыкнете к этому; Вам не нужно убирать правую руку с домашнего ряда клавиатуры.
Что выводит echo $TERM
, набранный в приглашении оболочки? Какой эмулятор терминала вы используете (xterm
и т.д.)? Какую версию vi
вы используете (vim
, что-то еще?) На какой ОС вы работаете? Вы используете Cygwin?