Вряд ли это как-то связано с латексом.
Для клавиш со стрелками нет односимвольных кодов; вместо этого они отправляют контрольные последовательности. Например, клавиша со стрелкой вверх обычно отправляет 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?