15

Как вы это раскручиваете? потому что вы постоянно нажимаете команду r, чтобы перезагрузить браузер, и часто вы находитесь в терминале.

Поскольку я не понял, как снова включить клавиши со стрелками, в настоящее время я убиваю все свои экраны и перезагружаю экран, что является болью.

4 ответа4

28

Как хороший сторонник Vim, я чувствую себя обязанным сказать вам, чтобы вы научились использовать hjkl в качестве клавиш управления курсором. На полпути к изучению проблемы я думал, что она загадочным образом исправилась, пока не понял, что тестирую с использованием hjkl вместо реальных клавиш со стрелками.

Во всяком случае, теперь для реального ответа.

Вместо того, чтобы выключать все свои экраны и перезапускать, вы можете воспользоваться возможностью экрана перемещаться между терминалами. Нажмите CTRL+A CTRL+D чтобы отсоединить экран от терминала, затем запустите screen -D -R чтобы установить его заново. Это должно заставить ваши клавиши со стрелками работать снова.

Если вы находитесь не на экране, а только в Vim, вы можете CTRL+Z и набрать fg для того же эффекта.

Вы также можете обойти проблему с клавишами курсора в Vim, но сброс мог бы изменить другие параметры терминала, поэтому безопаснее делать это, как описано выше, чтобы не увидеть другие случайные проблемы с отображением / клавиатурой. Если вы хотите переназначения в любом случае, вот они:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

Грязные детали:

И Vim, и screen используют библиотеку ncurses для управления терминалом. Одна из вещей, которые ncurses делает, когда получает контроль над VT100-совместимым терминалом, - это переключение клавиш со стрелками в "режим приложения", который изменяет коды, которые они излучают. Например, клавиша со стрелкой вверх меняется с Esc [ A на Esc O A Контрольный код VT100, который он выдает, это Esc [ ? 1 h . Команда сброса терминала, отправленная Command+R, сбрасывает клавиши курсора до значений по умолчанию.

Отключение и повторное подключение экрана приводит к тому, что ncurses возвращает контроль над терминалом, который повторно применяет все настройки, которые ему нравятся, так что это, вероятно, самый переносимый и надежный способ вернуть все в нормальное состояние.

Контрольные коды VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm

6

Вы можете быстро и легко это исправить с помощью :!reset

1

Если вы используете iTerm, вы можете вернуть сеанс vim, нажав command+d и command+w

Зачем?

command+d разделит панель терминала, волшебным образом восстановив ту, с которой вы пришли.

command+w теперь закроет разделенную панель, которую вы только что открыли.

1

Я сопоставляю Command-r "Игнорировать" в отображениях клавиш iTerm.

Снимок экрана диалога настроек iTerm2

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