Ciągle się z tym spotykam, ponieważ jestem programistą stron internetowych, „cmd-r” ma taki efekt uboczny, że uniemożliwia działanie klawiszy strzałek w dowolnym trybie, ale nie mogę sobie wyobrazić, że to jest cel i nie mogłem znaleźć wszelka dokumentacja tego, co faktycznie powinna zrobić.
Edycja: Najwyraźniej jest to właściwie polecenie terminalu Mac, „Send Reset”, więc myślę, że teraz jest to pytanie: „Do czego służy polecenie send reset?” Wyjaśnia jednak, dlaczego nie udało mi się go znaleźć w dokumentach vim.
Dzieje się tak nawet wtedy, gdy nie używam screena i odkryłem, że mogę wrócić do normalności, czyszcząc terminal z uruchomionym vimem (przetestowałem to również z tmuxem, ale nie screenem:
źródło
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:
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
źródło