Wie kann ich Strg + Pfeile in Vim reparieren?

26

Ich verwende die Putty -> Suse box -> vim 7.2Combo zum Bearbeiten und möchte die Combo Strg + Pfeile einer bestimmten Aufgabe neu zuordnen. Aus irgendeinem Grund ignoriert Vim die Verknüpfung und wechselt in den Einfügemodus und fügt das Zeichen "D" (für links) von "C" (für rechts) ein.

Welcher Teil meiner Tastatur- / Terminalkonfiguration ist schuld und wie kann ich das beheben?

Alex B
quelle
PuTTY sendet keine sinnvollen Sequenzen für die Kontrollpfeile. Keine der vorgeschlagenen Antworten ist richtig (oder nützlich).
Thomas Dickey

Antworten:

27

Finden Sie genau heraus, welche Escape-Sequenz Ihr Terminal für Ctrl+ Pfeil sendet, indem Sie Ctrl+ V, Ctrl+ Pfeil im Einfügemodus eingeben : Dies fügt das führende ESCZeichen (wie ^[in vim gezeigt) wörtlich ein, gefolgt vom Rest der Escape-Sequenz. Dann erzähle vim von diesen Fluchtsequenzen mit so etwas wie

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Ich erinnere mich anscheinend, dass Putty eine Standardeinstellung für den Anwendungs-Cursortasten-Modus hat , die unpraktisch ist (ich vergesse, warum). Möglicherweise möchten Sie diese Einstellung zuerst umschalten .

Beachten Sie, dass Escapesequenzen zwischen Terminals unterschiedlich sind, Konflikte (dh eine Escapesequenz, die verschiedenen Schlüsseln in verschiedenen Terminals entspricht) jedoch selten vorkommen. Daher ist es nicht unbedingt erforderlich, die Zuordnungen nur auf einen bestimmten Terminaltyp anzuwenden.

Gilles 'SO - hör auf böse zu sein'
quelle
Wie kann ich feststellen, welche Escape-Sequenz gesendet wurde?
Alex B
@Alex: Ich habe versucht, meine Erklärung zu klären, mich zu beschweren, wenn du meinen ersten Satz immer noch nicht verstehst.
Gilles 'SO - hör auf, böse zu sein'
Sie können auch ausführen od -aoder od -cwenn Sie Oktal graben und dann die fraglichen Schlüssel eingeben. Siehe "hinzugefügt" in meiner Antwort für ein Beispiel.
msw
Es tut mir leid, dass ich so spät auf diese Frage zurückgekommen bin, aber ich habe herausgefunden, dass PuTTY immer noch Anwendungscursortasten an das Terminal sendet, auch wenn ich es vollständig ausgeschaltet habe . Ich bin ratlos, was ich sonst noch tun sollte, um es verschwinden zu lassen.
Alex B
@Alex: Du musst es nicht wegmachen, du kannst deinen Anwendungen davon erzählen (was ich als Weg des geringsten Widerstands befunden habe). Oder Sie können PuTTY durch eine der Alternativen wie mintty plus Cygwin ssh ersetzen (aber das wird für diese Site nicht mehr aktuell).
Gilles 'SO - hör auf böse zu sein'
7

Am besten sehen Sie sich die Konfiguration des PuTTY- Anwendungscursortasten-Modus an .

Die Standardsequenzen werden ESCals Präfix gesendet, [gefolgt von Apend oder Change oder anderen Dingen, die Sie in den Einfügemodus versetzen .

fügte hinzu, Gilles folgend

Eine etwas explizitere Version der ^ V-Escape ist mit od (1) zu sehen. Hier tippe ich ^ Up, ^ Down, ^ Right, ^ Left in mein Terminal:

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

Also mein Endgerät sendet, ^[[1;5Awenn ich Ctrl+ drücke

msw
quelle
Das Deaktivieren des Anwendungscursortastenmodus scheint nicht zu helfen.
Alex B
0

für meine dies und andere vim tastatur probleme mache ich einfach

vim ~/.vimrc
set nocompatible
zainengineer
quelle