Ich habe keinen Mac zur Hand, um diese Antwort zu testen, aber ich stoße gelegentlich auf dieses Problem in XTerm unter Linux, und (vorausgesetzt, iTerm2 respektiert die gleichen Steuercodes), finden Sie die unten stehende Lösung möglicherweise hilfreich.
Führen Sie den folgenden Shell-Befehl im Terminal aus, in dem das Problem auftritt:
printf "\e[?1004l"
(Beachten Sie, dass das letzte Zeichen eine 'ell' in Kleinbuchstaben ist.)
Diese ANSI-Steuersequenz entspricht der in Thomas Dickeys Antwort aufgeführten, schaltet jedoch die Funktion aus (und nicht ein). Es sollte Ihr Problem in allen Anwendungen lösen, nicht nur in Vim, indem verhindert wird, dass die Zeichen überhaupt vorkommen.
Unter Linux kann ich diese Steuerungssequenz anhand der folgenden Schritte demonstrieren:
- Führen Sie
xterm
die Funktion aus und aktivieren Sie sie, indem Sie sie ausführen printf "\e[?1004h"
.
- Führen Sie
xeyes
eine andere GUI-Anwendung von demselben XTerm aus . (Aus irgendeinem Grund tritt dieser Effekt bei mir erst auf, wenn der betreffende XTerm eine Anwendung startet. Weiß jemand, warum?)
- Wechseln Sie wiederholt den Fokus in das ursprüngliche XTerm hinein und aus ihm heraus (z. B. durch Klicken auf Fenster) und sehen Sie,
^[[O
wie ^[[I
das ursprüngliche XTerm "eingetippt" wird.
- Schließen Sie nun Xeyes, kehren Sie zum ursprünglichen XTerm zurück und führen Sie es aus
printf "\e[?1004l"
(um die Funktion zu deaktivieren, wie im obigen Fix beschrieben).
- Wiederholen Sie die obigen Schritte " Ausführen
xeyes
, Fokus wechseln ", diesmal werden jedoch keine Zeichen in das Terminal eingegeben.
Ich persönlich sehe dieses Problem nur, wenn ich versehentlich Binärausgaben auf das Terminal kopiert habe. Wenn Sie jedoch häufiger darauf stoßen, möchten Sie diese möglicherweise zum printf
interaktiven Startskript Ihrer Shell hinzufügen (z ~/.bashrc
. B. ). Das Senden des Steuercodes scheint (zumindest unter XTerm) nicht zu schaden, wenn die Funktion bereits deaktiviert ist. Daher sollte es sicher sein, auch wenn dieses Problem nur gelegentlich auftritt.
Wenn Sie befürchten, dass Ihre Shell immer diese Ausgabe generiert, weil Sie sie manchmal an Orten verwenden, die mit diesen Steuercodes nicht gut umgehen, oder wenn das Problem manchmal nach dem Starten der Shell ausgelöst wird, ziehen Sie es möglicherweise vor, diese festzulegen Richten Sie einen Alias (z. B. mit alias focusfix='printf "\e[?1004l"'
) ein, um die manuelle Ausführung zu vereinfachen.