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.

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?


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.


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>

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.