3

Я обычно использую Ctrl+PageUp и Ctrl+PageDown для переключения вкладок в Vim. Но при запуске Vim на экране GNU они не переключают вкладки и вместо этого имеют эффект переключения регистра.

Я использую следующие привязки в моем .screenrc:

bindkey "^[[1;5D" prev
bindkey "^[[1;5C" next

Это позволяет мне перемещаться между вкладками screen с помощью Ctrl+ и Ctrl+.

Но отключение этих привязок не решает мою проблему, поэтому я не думаю, что они виновны.

Я предполагаю, что между моим эмулятором терминала, экраном и Vim есть какое-то взаимодействие, которое я не понимаю.

Редактировать: я нашел с помощью этого ответа, что запуск vim с переменной окружения TERM установленной (переопределенной) в xterm является жизнеспособным обходным путем, как это:

TERM=xterm vim

Но я думаю, что вопрос все еще стоит, поскольку я хочу знать, почему это необходимо.

1 ответ1

2

Обычно, когда вы запускаете screen он выполняет некоторую инициализацию, которая (в зависимости от фактического терминала) может изменить escape-последовательности, посылаемые различными клавишами клавиатуры.

Например, я вижу, что он инициализирует xterm:

  • клавиши курсора приложения
  • клавиатура приложения

В режиме приложения xterm (и другие терминалы) изменяют способ, которым неизмененные специальные ключи отправляют escape-последовательности, используя другой префикс (escape [по сравнению с escape O). Для измененных ключей (таких как управляющий PageUp) xterm не меняет свою схему. Но терминал, который вы используете, может сделать это.

Поскольку ни screen ни vim обращают никакого внимания на описание терминала для этих модифицированных ключей, они не увидят, что описание терминала отличается при работе screen . Но вы можете проверить, как рабочий screen изменяет фактические строки, отправленные этими ключами, и настроить ваш .screenrc чтобы отразить это.

Вы можете увидеть фактические строки, используя

  • cat -v (в большинстве систем) или
  • префикс специальных клавиш с контролем V

Дальнейшее чтение:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .