Tutaj udzielono odpowiedzi na to pytanie: podczas uruchamiania ekranu w OSX, Command + R przesuwa klawisze strzałek w vimie na wszystkich ekranach
Skopiowana odpowiedź:
Jako dobry mały adwokat Vima, mam obowiązek powiedzieć ci, abyś nauczył się używać hjkl jako klawiszy kursora. W połowie odkrywania problemu myślałem, że rozwiązał się w tajemniczy sposób, dopóki nie zdałem sobie sprawy, że testuję przy użyciu hjkl zamiast rzeczywistych klawiszy strzałek.
Tak czy inaczej, teraz prawdziwa odpowiedź.
Zamiast wyłączać wszystkie ekrany i restartować, możesz skorzystać z możliwości poruszania się między terminalami. Naciśnij CTRL + A CTRL + D, aby odłączyć ekran od terminala, a następnie uruchom screen -D -R, aby ponownie podłączyć. To powinno sprawić, że klawisze strzałek znów będą działać.
Jeśli nie jesteś na ekranie, ale tylko w Vimie, możesz CTRL + Z i wpisać fg, aby uzyskać ten sam efekt.
Możesz także obejść problem z klawiszem kursora w Vimie, ale reset mógł zmienić inne opcje terminala, więc bezpieczniej jest postępować zgodnie z powyższym opisem, aby nie zaobserwować innych problemów z wyświetlaniem / klawiaturą. Jeśli mimo wszystko chcesz ponownie przypisać, oto one:
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>
Brudne szczegóły:
Zarówno Vim, jak i screen używają biblioteki ncurses do zarządzania terminalem. Jedną z rzeczy, które ncurses robi, kiedy przejmuje kontrolę nad terminalem kompatybilnym z VT100, jest przełączanie klawiszy strzałek w „tryb aplikacji”, który zmienia kody, które wysyłają. Na przykład klawisz strzałki w górę zmienia się z Esc [A na Esc O A. Emitowany w tym celu kod sterujący VT100 to Esc [? 1 godz. Polecenie resetowania terminala wysłane przez Command + R resetuje klawisze kursora do wartości domyślnych.
Ekran odłączania i ponownego podłączania powoduje, że ncurses ponownie przejmuje kontrolę nad terminalem, który ponownie stosuje wszystkie ustawienia, które lubi, więc jest to prawdopodobnie najbardziej przenośny i niezawodny sposób na przywrócenie normalnego działania.
Kody kontrolne VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm