Warum bringt cmd-r Vim auf dem Mac durcheinander? Was versucht es eigentlich zu tun?

19

Da ich ein Webentwickler bin, stoße ich ständig darauf. 'Cmd-r' hat den Nebeneffekt, dass die Pfeiltasten in keinem Modus funktionieren, aber ich kann mir nicht vorstellen, dass dies der Zweck ist, und ich konnte es nicht finden jede Dokumentation darüber, was es eigentlich tun soll.

Bearbeiten: Anscheinend ist dies tatsächlich ein Mac-Terminal-Befehl, 'Send Reset', also denke ich, dass dies jetzt eine Frage von "Welchen Zweck erfüllt der Send Reset-Befehl?" Erklärt, warum ich es in den vim-Dokumenten nicht finden konnte.

GlyphGryph
quelle

Antworten:

16

Um diesen Ärger zu vermeiden, ordne ich Command-R in der iTerm-Tastenzuordnung "Ignorieren" zu.

Geben Sie hier die Bildbeschreibung ein

Christian Long
quelle
Vielen Dank. Das wurde furchtbar nervig.
ThinkingInBits
10

Dies passiert mir auch, wenn ich keinen Bildschirm verwende und festgestellt habe, dass ich zur Normalität zurückkehren kann, indem ich das Terminal lösche, auf dem vim ausgeführt wird (ich habe dies auch mit tmux getestet, aber nicht mit screen:

:!clear
mtjburton
quelle
6

Diese Frage wurde hier beantwortet: Wenn Sie den Bildschirm unter OSX ausführen, bringt Befehl + r die Pfeiltasten in vim auf allen Bildschirmen durcheinander

Kopierte Antwort:

Als guter kleiner Vim-Anwalt muss ich Ihnen unbedingt sagen, dass Sie lernen sollen, hjkl als Cursortasten zu verwenden. Nach der Hälfte der Untersuchung des Problems dachte ich, es hätte sich auf mysteriöse Weise von selbst behoben, bis mir klar wurde, dass ich mit hjkl anstelle der eigentlichen Pfeiltasten testete.

Wie auch immer, jetzt zu einer echten Antwort.

Anstatt alle Bildschirme herunterzufahren und neu zu starten, können Sie die Fähigkeit des Bildschirms nutzen, zwischen Terminals zu wechseln. Drücken Sie STRG + A STRG + D, um den Bildschirm von Ihrem Terminal zu trennen, und führen Sie dann Bildschirm -D -R aus, um ihn wieder anzuschließen. Dadurch sollten Ihre Pfeiltasten wieder funktionieren.

Wenn Sie nicht auf dem Bildschirm, sondern nur in Vim sind, können Sie STRG + Z drücken und fg eingeben, um den gleichen Effekt zu erzielen.

Sie können das Cursortastenproblem in Vim auch umgehen, aber durch das Zurücksetzen wurden möglicherweise andere Terminaloptionen geändert. Daher ist es sicherer, die oben beschriebenen Schritte auszuführen, damit keine anderen zufälligen Anzeige- / Tastaturprobleme auftreten. 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 ncurses-Bibliothek, um das Terminal zu verwalten. Wenn ncurses die Kontrolle über ein VT100-kompatibles Terminal übernimmt, werden die Pfeiltasten in den "Anwendungsmodus" geschaltet, wodurch die von ihnen ausgegebenen Codes geändert werden. Die Aufwärtspfeiltaste ändert sich beispielsweise von Esc [A zu Esc O A. Der dazu ausgegebene VT100-Steuercode lautet Esc [? 1 h. Der von Befehl + R gesendete Befehl zum Zurücksetzen des Terminals setzt die Cursortasten auf den Standardwert zurück.

Durch das Abnehmen und erneutes Anbringen des Bildschirms übernimmt ncurses die Kontrolle über das Terminal, wodurch alle gewünschten Einstellungen erneut angewendet werden. Dies ist wahrscheinlich die tragbarste und zuverlässigste Methode, um den normalen Zustand wiederherzustellen.

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

Munen
quelle
Ja, ich habe festgestellt, dass nach dem Posten "Der von Befehl + R gesendete Befehl zum Zurücksetzen des Terminals setzt die Cursortasten auf die Standardeinstellung zurück" immer noch gut wäre, um genau zu wissen, warum dies geschieht. Ich bin ehrlich gesagt hauptsächlich daran interessiert zu wissen, was die beabsichtigte Verwendung dieses Befehls ist, was jedoch nicht antwortet.
GlyphGryph