Alt Tastenkürzel funktionieren nicht auf Gnome-Terminal mit Vim
Ich bin mit Vim auf einem gnome-terminal. Aber die alt-Taste Zuordnungen nicht arbeiten.
Zum Beispiel (dies ist nur ein Beispiel):
:imap <A-i> <Esc>
Es funktioniert gut in GVim. Aber wenn ich den selben Befehl mit Vim im gnome-terminal funktioniert es halt nicht.
Ich denke also, das problem ist das terminal, richtig?
Wie kann ich es beheben?
Dank
EDIT: ich habe Windows 7 auf dem gleichen Rechner installiert und mit Windows terminal funktioniert es Prima zu.
InformationsquelleAutor der Frage Jesse | 2011-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem
Gibt es zwei Möglichkeiten für einen terminal-emulator zu senden, Alt - Taste (in der Regel als eine Meta-Taste als aktuellen terminals nicht Alt). Es können entweder per 8-bit-Zeichen und das höchste bit, wenn der Alt ist verwendet werden, oder es können escape-Sequenzen senden Alt- als
<Esc>a
. Vim erwartet, um die 8-bit-Kodierung statt die escape-Sequenz.Einige terminal-Emulatoren wie xterm kann eingestellt werden, um entweder den Modus, aber Gnome-terminal bietet keine solche Einstellung. Um ehrlich zu sein in diesen Tagen der Unicode-Bearbeitung, die 8-bit-Codierung ist nicht so eine gute Idee auf jeden Fall. Aber escape-Sequenzen sind nicht problem frei, entweder; Sie bieten keine Möglichkeit der Unterscheidung zwischen
<Esc>j
Bedeutung Alt-j vs drücken Sie Escgefolgt von j.In früheren terminal verwenden, ist die Eingabe Escj einem anderen Weg zu schicken, um ein Meta auf einer Tastatur ohne ein Meta - Taste, aber das passt nicht gut mit vi ' s verwenden der Esc-Taste zum verlassen einfügen - Modus.
Die Lösung
Ist es möglich, dies zu umgehen, konfigurieren Sie vim zum anzeigen der escape-Sequenzen, um Ihren Alt-Kombinationen.
Fügen Sie diese zu Ihrem .vimrc:
Alt-Brief wird nun anerkannt werden, indem Sie vi in ein terminal sowie von gvim. Die
timeout
Einstellungen werden verwendet, um die Arbeit rund um die Doppeldeutigkeit mit " escape-Sequenzen. Esc und j gesendet innerhalb von 50ms zugeordnet werden<A-j>
die größer als 50ms zählen als separate Tasten. Das sollte genug Zeit, um die Unterscheidung zwischen Meta-Codierung, und schlagen zwei Schlüssel.Wenn Sie mögen es nicht, wenn Timeout gesetzt, die mal für andere zugeordnete Tastenkombinationen (nach einer Sekunde ist Standard), dann können Sie
ttimeout
statt. ttimeout gilt nur für die Tasten-codes und nicht mit anderen Zuordnungen.InformationsquelleAutor der Antwort jpnp
Für
Gnome-terminal
verwenden Sie den folgenden statt:^[i
eingegeben werden soll, durch drückenCtrl-v
Alt-i
Aufmerksamkeit: Sie müssen
yank
undput
imVim
wenn Sie möchten, an eine andere Stelle kopieren. Wenn Sie kopieren Sie einfach die Zuordnung in einem editor wiegedit
die Zuordnung wird wohl gebrochen werden.BEARBEITEN hier ist ein Beispiel, das macht
Alt-k
fügen Sie eine leere Zeile oberhalb des Cursors, undAlt-j
fügen Sie eine leere Zeile nach der aktuellen Zeile.InformationsquelleAutor der Antwort ying17zi
Versuchen
Oder, wenn die Eingabe alt fügt einen Charakter (wie in meinem Fall, es wird eine carret:
ˆ
) nur anzeigen, dass der Charakter:Vorsichtig sein, weil dies nicht funktionieren würde (zumindest in meinem system, MacOS 10.6). Der Cursor wartet auf einen Brief, denn es ist nicht gerade ein caret-Zeichen, es ist ein Zirkumflex.
InformationsquelleAutor der Antwort sidyll
Das gleiche passiert mir. Ich suchte bei Google mit "gnome-terminal " alt-Taste", und fand, fragte jemand fast die gleiche Frage: "So deaktivieren Sie die alt-hotkey-Verhalten von gnome-terminal?" im ersten link gefunden. (Der zweite link ist nur diese Frage)
So, vielleicht können Sie versuchen, diese:
InformationsquelleAutor der Antwort aptx4869
Kann es sein, dass die shortcuts sind eigentlich von den Gnome-Desktop. Schauen Sie sich einmal den Gnome-Keyboard-Shortcuts-tool (im Menü System, Einstellungen, Tastatur-Shortcuts), die können Sie anzeigen und ändern die Tastenkombinationen definiert, die auf Gnome-Desktop. Wenn Sie die Tastenkombination zugeordnet ist, eine Funktion des Gnome-Desktop, dann entfernen Sie es und dann das key combo sollte der filter nach unten zu Vim richtig.
Oder Sie mögen Recht haben, dass es ein problem des Anschlusses. Nicht alle terminals unterstützen alle wichtigen combos. Möglicherweise ist Ihr problem, das in der Vim-Hilfe docs an
:h map-alt-keys
. Die docs bieten ein workaround, aber nicht sehr gut.InformationsquelleAutor der Antwort Herbert Sitz
Werfen Sie einen Blick auf Abschnitt 1.10 von http://vimdoc.sourceforge.net/htmldoc/map.html. Es scheint zu zeigen, dass gnome-terminal automatisch entweicht die Alt-modifier, so dass es nicht schalten Sie das byte gesendet, in der Weise, dass Vim erwartet. Das Dokument scheint zu zeigen, dass es nicht wirklich eine Möglichkeit, um dieses außer mit einem anderen terminal (wie xterm).
Dies ist sicherlich frustrierend, weil so weit wie ich erzählen kann, die Linux-Maschinen sind ebenfalls unfähig, mit der D (Mac-Befehl oder Linux ist Super) - Bindungen, also zumindest soweit das terminal geht, wir sind beschränkt auf die Shift-und Strg-Modifikatoren, die ist frustrierend, wenn wir sicherstellen wollen, dass können wir alle Befehle, die wir verwenden, in Gvim auf terminal Vim (zumindest ohne Wechsel-terminals, an denen bin ich vielleicht zu stur - gnome-terminal ist einfach so viel schöner). Ich habe auf der Suche nach einem Weg, um dieses, aber nicht in der Lage gewesen, etwas zu finden.
InformationsquelleAutor der Antwort metasoarous