Beim Ausführen von screen unter OSX werden mit command + r die Pfeiltasten in vim auf allen Bildschirmen durcheinander gebracht

15

Wie lässt sich das abwickeln? weil Sie die ganze Zeit den Befehl r drücken, um Ihren Browser neu zu laden, und oft sind Sie im Terminal.

Da ich nicht herausgefunden habe, wie ich die Pfeiltasten wieder aktivieren kann, beende ich derzeit alle meine Bildschirme und starte den Bildschirm neu, was sehr schmerzhaft ist.

Der Hochstapler
quelle

Antworten:

28

Als ein guter kleiner Vim-Anwalt muss ich Ihnen sagen, dass Sie lernen sollen, wie Sie hjkl als Cursortasten verwenden. Nach der Hälfte der Erkundung des Problems dachte ich, es habe sich auf mysteriöse Weise selbst behoben, bis mir klar wurde, dass ich Tests mit hjkl anstelle der eigentlichen Pfeiltasten durchführte.

Wie auch immer, jetzt für eine echte Antwort.

Anstatt alle Bildschirme herunterzufahren und neu zu starten, können Sie die Möglichkeit des Bildschirms nutzen, zwischen Terminals zu wechseln. Drücken Sie CTRL+A CTRL+D, um den Bildschirm von Ihrem Terminal screen -D -Rzu trennen , und führen Sie den Befehl aus, um die Verbindung erneut herzustellen. Dadurch sollten Ihre Pfeiltasten wieder funktionieren.

Wenn Sie nicht auf dem Bildschirm, sondern nur in Vim sind, können Sie den gleichen Effekt erzielen CTRL+Zund fgeingeben.

Sie können auch das Cursortastenproblem in Vim umgehen, aber das Zurücksetzen hat möglicherweise andere Terminaloptionen geändert. Daher ist es sicherer, wie oben beschrieben vorzugehen, damit Sie keine anderen zufälligen Anzeige- / Tastaturprobleme feststellen. Wenn Sie die Neuzuordnungen trotzdem möchten, sind sie hier:

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

Schmuddelige Details:

Sowohl Vim als auch screen verwenden die Bibliothek ncurses, um das Terminal zu verwalten. Wenn ncurses die Steuerung eines VT100-kompatiblen Terminals übernimmt, werden unter anderem die Pfeiltasten in den "Anwendungsmodus" geschaltet, in dem die von ihnen ausgegebenen Codes geändert werden. Die Aufwärtspfeiltaste ändert sich beispielsweise von Esc [ Azu Esc O A. Der dazu ausgegebene VT100-Steuercode lautet Esc [ ? 1 h. Der Befehl zum Zurücksetzen des Terminals, der von Befehl + R gesendet wird, setzt die Cursortasten auf die Standardeinstellung zurück.

Durch das Trennen und erneute Anschließen des Bildschirms übernimmt ncurses die Kontrolle über das Terminal, wobei alle gewünschten Einstellungen erneut angewendet werden. Dies ist wahrscheinlich die portabelste und zuverlässigste Methode, um den Normalzustand wiederherzustellen.

VT100-Steuercodes: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm

Jander
quelle
Ein weiteres Problem kann das verwirrende vim des Terminaltyps sein. Weitere
Informationen finden
Danke für diese Lösung! Das hat mich als Webentwickler um den Verstand gebracht. im browser drückst du viel auf cmd-r, um den bildschirm zu aktualisieren und gelegentlich muss ich zufällig cmd-r in vim getroffen haben. Ich konnte nicht herausfinden, warum meine Pfeiltasten bis jetzt abgewischt wurden. und für hjkl-puristen gibt es den hauptgrund, warum ich hjkl nicht benutze, weil sie im einfügemodus nicht für cursorbewegungen zur verfügung stehen. Löse das Problem für mich und ich werde es mir noch einmal überlegen.
rev
6

Mit können Sie dies schnell und einfach beheben :!reset

GlyphGryph
quelle
1

Wenn Sie iTerm verwenden, können Sie Ihre VIM-Sitzung durch Drücken von command+dund wiederherstellencommand+w

Warum?

command+d teilt das Terminalfenster und stellt auf magische Weise das wieder her, von dem Sie gekommen sind.

command+w wird nun das gerade geöffnete geteilte Fenster schließen.

Adam Grant
quelle
1

Ich ordne Command-r in den iTerm-Tastenzuordnungen "Ignorieren" zu.

Screenshot des iTerm2-Einstellungsdialogs

Christian Long
quelle