Zuordnung von Strg-Rückschritt im Terminator

1691
user1026044

Ich habe vor kurzem mit Vim angefangen. Von früheren Editoren bin ich daran gewöhnt, ein ganzes Wort durch Drücken von Ctrl- zu löschen Backspace. Nachdem ich mir die Dokumentation angesehen hatte, stellte ich fest, dass dies durch Drücken von Ctrl- win Vim gemacht wurde. Das Problem ist, dass ich, nachdem ich mich an das Drücken von Ctrl- wgewöhnt habe, jedes Mal, wenn ich ein Wort falsch geschrieben habe, Tabs und Chats geschlossen habe (beim Schreiben dieser Frage habe ich dieses Tab 5 Mal geschlossen). Also habe ich nachgeschaut, wie man Schlüssel in Vim abbildet und folgendes versucht:

:imap <C-BS> <C-w> 

Leider hat es nicht funktioniert. Nach einiger Recherche fand ich heraus, dass das Terminal nicht zwischen Ctrl- Backspaceund unterscheidet Backspace. Ich habe einige Hacks und Patches gesehen, um dieses Problem zu beheben, aber ich konnte sie nicht dazu bringen, an Terminator zu arbeiten (was der Emulator ist, den ich verwenden möchte).

Gibt es eine Möglichkeit zur Karte Ctrl- Backspacein Vim, wenn Terminator verwenden?

8
Willkommen in Vim Hölle. romainl vor 11 Jahren 1
Ich mag die Tatsache, dass diese Hölle ziemlich produktiv ist und mit Patches verbessert werden kann. Ingo Karkat vor 11 Jahren 2
Übrigens, ich sammle diese Art von Fragen, um hoffentlich einen Fall zu finden, dass dieses spezielle Problem in einer Vim 8.0 gelöst wird. Ich möchte auch immer mehr einheitliche Mapping-Kandidaten. Ingo Karkat vor 11 Jahren 0
Dieses Problem kann in vim (AFAIK) nicht wirklich behoben werden. Das hängt davon ab, auf welchem ​​Terminal vim läuft. Für eine Vielzahl von Benutzern, die vte verwenden (Gnone-Terminal, Mate-Terminal, Guake usw.), hat dieses Problem in letzter Zeit einige Aufmerksamkeit auf sich gezogen und könnte bald behoben sein. Sehen Sie sich diesen Fehler an: https://bugzilla.gnome.org/show_bug.cgi?id=420039 trusktr vor 10 Jahren 0
@IngoKarkat Siehe den obigen Kommentar. ^ trusktr vor 10 Jahren 0

1 Antwort auf die Frage

8
Ingo Karkat

Aufgrund der Art, wie die Tastatureingaben intern gehandhabt werden, ist dies heutzutage leider generell nicht möglich. Einige Tastenkombinationen wie Ctrl+ (nicht alphabetisch) können nicht zugeordnet werden. Ctrl+ (Buchstaben) vs. Ctrl+ ( Shift+) Buchstaben können nicht unterschieden werden. (Sofern Ihr Terminal keinen eindeutigen Termcap- Code sendet, was die meisten nicht tun.) Geben Sie im Einfüge- oder Befehlszeilenmodus die Tastenkombination ein. Wenn nichts passiert / ist, können Sie diese Tastenkombination nicht verwenden. Dies gilt auch für <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>usw. (Nur eine Ausnahme ist <BS>/ <C-H>.) Dies ist ein bekannter Schmerzpunkt und Gegenstand verschiedener Diskussionen zu vim_dev und dem #vim-IRC-Kanal.

Einige Leute (vor allem Paul LeoNerd Evans) wollen das beheben (sogar für die Konsole Vim in Terminals, die dies unterstützen) und haben verschiedene Vorschläge gemacht, vgl. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Bis heute haben sich noch keine Patches oder Freiwilligen gemeldet, obwohl viele den Wunsch geäußert haben, dies in einer zukünftigen Veröffentlichung von Vim 8 zu veröffentlichen.

Danke für die schnelle Antwort. Ich denke, ich muss mich erst daran gewöhnen, Strg-W für Vim und Strg-Backspace für Browser zu verwenden. user1026044 vor 11 Jahren 0
Das Gute an Ctrl-W ist, dass es auch in Bash usw. funktioniert. Ingo Karkat vor 11 Jahren 0
Ja ich weiß. Für alles andere müssen Sie jedoch noch die Strg-Rücktaste verwenden, und die Tatsache, dass Strg-W zum Standard zu sein scheint, um Tabs und Fenster überall zu schließen, macht das nervig. Ich werde mich wahrscheinlich nach einer Weile daran gewöhnen. user1026044 vor 11 Jahren 0
Aber kann dies nur in der vim-Codebasis gelöst werden? Wie kann ein beliebiger Code in der vim-Codebasis zwischen Rücktaste und Strg + Rücktaste unterscheiden, wenn das Terminal, in dem es ausgeführt wird, dieselbe genaue Eingabe für eine der Tastenkombinationen sendet? Anscheinend ist dies etwas, das in dem Terminal, in dem vim ausgeführt wird, behoben werden muss, nicht in vim. Beispielsweise sendet Guake sowohl für die Rücktaste als auch für die Strg-Taste die Rücktaste, wodurch sie (AFAIK) nicht unterschieden werden können. xterm hingegen sendet "^ H" für die Rücktaste und "^?" für Strg + Rücktaste, wodurch sie unterscheidbar sind. trusktr vor 10 Jahren 0
Leider ist in xterm die Rücktaste (`^ H`) nicht von Strg + h (` ^ H`) zu unterscheiden. Vielleicht können wir eine neue Escape-Sequenz erstellen, um alle drei unterscheiden zu können? Ich weiß nicht, wie einfach das ist, aber es scheint sicher zu sein, da es mit dem aktuellen Stand der Dinge sicher ist (einige Terminals verwenden "^?" Für die Rücktaste, andere "^ H" und umgekehrt) Ich kann mir nicht viele Terminal-Apps vorstellen (wenn überhaupt), das Strg + Backspace-Szenario in Betracht ziehen (dies wäre aufgrund der Vielzahl an Terminals völlig unbestimmt). trusktr vor 10 Jahren 0
(Forts.) und das Hinzufügen einer neuen Escape-Sequenz würde nicht wirklich brechen, wenn überhaupt. Es würde nur eine Möglichkeit hinzufügen, Strg + Rücktaste für alle zu unterscheiden! trusktr vor 10 Jahren 0