Strg + TAB arbeitet nicht in vim mit gnome-terminal

1505
cantabile_hisa

Ich habe ein ernstes Problem. Normalerweise ist der Editor, den ich verwende, vim, obwohl ich die Aktion Strg + Tab nicht zuordnen kann. Ich möchte mit Strg + Tab (Strg + Umschalt + Tab) zwischen Tabs wechseln. In xterm ist diese Zuordnung aktiviert und die Aktion wird verwendet. Aber in gnome-terminal ist soeben die tab-Escape-Sequenz erschienen. Bitte sagen Sie mir, wie Sie mit gnome-terminal in vim wechseln.

3

3 Antworten auf die Frage

6
Ingo Karkat

Aufgrund der Art und Weise, wie die Tastatureingaben intern gehandhabt werden, ist dies heute selbst in GVIM 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.

3
Heptite

Das Problem ist, dass in einem Terminal ein TabZeichen ^I( Control- I) ist. Das bedeutet, dass das Drücken der Tabulatortaste, während Sie die Tabulatortaste drücken, das Terminal selbst nicht stört, um zu Vim zu gelangen. [1] Es sendet nur ein normales Tabulatorzeichen.

GVim kann dies unterstützen, da das Terminal nicht darauf angewiesen ist, welche Tasten in welcher Kombination gedrückt werden - es hat mehr direkten Zugriff auf Tastaturereignisse und kann daher problemlos geänderte Sondertasten anzeigen.

Ich empfehle Ihnen, einen anderen Schlüssel für die Zuordnung zu finden, damit Sie Konsistenz haben können.

[1] Ich verstehe, dass dies bei "modernen" Terminalemulatoren nicht mehr der Fall ist, aber es war so lange der Fall, dass es eine große Hürde gibt, die zu überwinden ist, da die von Vim verwendete Terminalbibliothek (Ncurses) nicht einmal funktioniert Behandeln Sie dieses Ereignis. Obwohl das Terminal dies möglicherweise technisch unterstützt, kann Vim dies nicht, weil die Bibliotheks-API, auf die es sich verlässt, dies nicht kann. Ungefähr einmal im Jahr gibt es in der Liste der Vim-Entwickler ernsthafte Diskussionen darüber, wie dieses Problem auf verschiedene Weise behoben werden kann, einschließlich des Umstiegs auf eine leistungsfähigere API, aber es kommt nie etwas dazu.

Bei den meisten Terminalemulatoren ist dies immer noch der Fall. Weder Xterm noch Gnome-Terminal (vte) oder urxvt behandeln Strg + Tab anders als Tab. grawity vor 9 Jahren 1
0
icc97

Die engste Antwort, die ich dafür habe, ist das Erstellen von Leader+ Tabund Leader+ Shift+Tab

map <leader><Tab> :bnext<cr> map <leader><S-Tab> :bprevious<cr> 

Ich habe mein Leaderzu ,(Komma) zugeordnet, also tippe ich ,+Tab

Sie funktionieren jedoch nicht sehr gut. Sie können nicht weiter gedrückt Leadergehalten werden, um Tabdurch die Registerkarten zu blättern. Dies ist auch nicht das Verhalten der MRU (zuletzt verwendet).

Zur Verdeutlichung verwende ich "Puffer" anstelle von "Registerseiten", da diese Karte für das Konzept, für das andere Editoren Registerkarten verwenden, viel besser ist.

Anstelle dessen können Sie Folgendes versuchen:

map <leader><Tab> :b<Space> 

Dadurch wird der ex-Befehl geöffnet, und Sie können drücken Tab, um das Scrollen durch die Puffer zu starten. Sie können auch und verwenden , um hin und her zu gehen.

Auf diese Weise können Sie auch den Teil eines offenen Puffers eingeben. Durch Drücken Tabder Taste blättern Sie dann durch die gefilterte Liste der offenen Puffer.

Persönlich habe ich jedoch nur ein Map Leader+ erstellt Tab, um mir das grundlegende Verhalten der MRU zu zeigen:

map <leader><Tab> :b#<cr>