Gnome-Terminal + Vim- und Ctrl-Shift-Zuordnungen

11

Ist es möglich, Sequenzen mit Ctrl- Shiftin Gnome Terminal abzubilden ?

Ich versuche, die Zuordnungen hinzuzufügen

  • map <C-S-[> gT
  • map <C-S-]> gt

und es funktioniert nicht. Wie geht das?

Irgendwie habe ich eine Karte erstellt <C-S-]>, aber es stellte sich heraus , dass dies nicht der Fall ist <C-S-]>, aber <C-]>es sieht so aus, als würde Shift in dieser Sequenz nicht erkannt. Es ist falsch konfiguriert oder es ist die Schuld des Gnome-Terminals?

Außerdem. Das Mapping <C-[>sieht nach dem Drücken so aus, als würde vim warten. Ich nehme an, es ist ein Zeitlimit für die Zuordnung, aber wie kann ich dieses Zeitlimit beseitigen, wenn ich genau drücke <C-[>und nichts anderes drücken möchte?

Ich habe gerade angefangen, vim zu lernen. Es tut mir leid, wenn in diesen Zuordnungen offensichtlich etwas nicht stimmt.

Simon
quelle

Antworten:

8

Ich denke, das Problem hier ist, dass Sie versuchen, vim, das erwartet, in einem Terminal ausgeführt zu werden, dazu zu bringen, eine STRG-UMSCHALT-Sequenz zu erkennen. Während X solche Kombinationen erkennen kann, können Anwendungen, die in einem Terminal (oder heutzutage in einem Terminalemulator) ausgeführt werden, dies nicht. Dies liegt daran, dass Terminals in der Vergangenheit nur Sieben- oder Acht-Bit-Sequenzen von ASCII-Daten über eine serielle Verbindung senden und empfangen konnten (obwohl dies "Escape-Sequenzen" umfassen kann, die den Cursor positionieren, Zeilen scrollen oder löschen, die Farbe ändern und andere hilfreiche Auswirkungen).

Der ASCII-Zeichensatz enthält 32 "Steuercodes", einschließlich der bekannten STRG-A bis STRG-Z. Es gibt jedoch keine entsprechenden ASCII-Codes für "STRG-UMSCHALT" A bis Z. Jetzt kann das Gnome-Terminal selbst diese Codes erkennen (STRG-UMSCHALT-V fügt beispielsweise Text aus der Zwischenablage ein), vim jedoch nicht in der Lage, direkten Zugriff darauf zu haben.

Natürlich kann möglicherweise (ich weiß nicht) ein Terminalemulator eingerichtet werden, um STRG-UMSCHALT-Tastendrücke in eine Escape-Sequenz umzuwandeln, die dann durch eine VIM-Zuordnung erkannt werden kann.

=======

AKTUALISIEREN

Sie könnten an gvim interessiert sein, einer grafischen Version von vim, die als X-Programm und nicht als Terminalprogramm ausgeführt wird. Vielleicht kann gvim CTRL-SHIFT-Codes verstehen?

Bartleby der Scrivener
quelle
4

Scheint ein Problem mit dem GNOME-Terminal zu sein, das bestimmte Kombinationen mit dem CtrlSchlüssel nicht zulässt . Die Online-Suche zeigt viele Fälle davon.

Nur für den Fall, dass Sie es nicht wissen, Ctrl+ page up/ page downdurchläuft die Registerkarten.

stschn
quelle
3

Wie Bartleby betonte, handelt es sich um eine Terminalbeschränkung, da vi die Schlüsselcodes als gleich ansieht.

Für Terminals wie xtermkönnen Sie das ändern. Für gnome-terminal welche ignoriert die X - Ressourcen - Einstellungen Ich weiß nicht , wie folgendes zu tun:

Diese SO-Frage behandelt dasselbe Thema. In diesem Beispiel wird dies für die Zuordnung mehrerer Schlüssel in der .XresourcesDatei verwendet. Z.B:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

Jetzt kommen verschiedene Schlüsselsequenzen für Ctrlavs. CtrlShifta, Ctrlbvs. CtrlShiftb, Ctrlfvs. in vi CtrlShiftf.

Wir können sie jetzt anders abbilden in ~/.vimrc:

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>
cfi
quelle
Bei der ursprünglichen Frage ging es um gnome-terminal, während sich Ihre Antwort auf bezieht xterm.
Egmont
@egmont: Guter Punkt und ein Versehen auf meiner Seite. Nach dieser Antwort die .Xresourceswerden ignoriert durch gnome-terminal. Das ist bedauerlich. Antwort aktualisiert.
cfi
Diese Antwort wurde als Q & A-Paar für SuperUser leicht umformuliert / gekreuzt , da ich sie hier wahrscheinlich löschen sollte, da sie nicht für das Terminal des Fragestellers gilt.
cfi
1

Es scheint, dass Sie nur alle Tastaturkürzel im Gnome-Terminal deaktivieren müssen.

sei unsichtbar
quelle
2
Warum hilft das Deaktivieren von Tastaturkürzeln?
Eliah Kagan
Nach meiner Erfahrung scheint es überhaupt nicht zu helfen.
Elliot Foster
1

In gnome-terminalden Escape-Sequenzen, die von Schlüsseln generiert werden, sind diese nicht konfigurierbar. Für viele Tasten erzeugen Ctrl+ keyund Shift+ Ctrl+ keyunterschiedliche Sequenzen; Leider für [und ]sie nicht, so dass Sie sie nicht unterscheiden können.

egmont
quelle