Problem z użyciem Ctrl + klawiszy strzałek w Vimie podczas używania Byobu z tmux

12

W Vimie ustawiłem Ctrl + klawisze strzałek, aby pomijać słowa. Działa to dobrze, gdy uruchomisz Vima w terminalu gnome.

Jednak podczas używania byobu (tmux) pokazuje dziwne zachowanie: usuwa wszystko po kursorze.

Dla porównania są to moje ustawienia vima:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w
Shivams
źródło

Odpowiedzi:

7

Problem jest dwojaki. Po pierwsze, tmuxdomyślnie konwertuje klawisze strzałek kontrolnych z jednego rodzaju sekwencji zmiany znaczenia na inny. Więc specjalne klucze, na które controlleftsą wysyłane vimbez modyfikatora, np left. Jeśli używasz, cat -vaby zobaczyć różne sekwencje specjalne, możesz zobaczyć coś takiego

^[OD

kontra to (poza tmux):

^[[1;5D

Linia

set-window-option -g xterm-keys on

naprawia ten aspekt. Drugą częścią jest to, że tmuxdomyślnie używa opisu terminala dla screen. Ten opis terminala nie opisuje klawiszy strzałek kontrolnych. Te wpisy z bazy danych terminali byłyby najbardziej odpowiednie dla VTE (terminal gnome):

Istnieją inne, takie jak

który byłby wybierany automatycznie podczas pracy w screenrazie odpowiedniego TERMzewnątrz były vte, vte-256coloritp tmuxnie to automatyczną selekcję; musisz zmodyfikować jego plik konfiguracyjny.

Nawiasem mówiąc, nie ma wpisu „screen.xterm”, ponieważ zakłócałby niektóre zastosowania screen. Nie ma konfliktu z TERM=xterm-new.

Jeśli masz domyślną (minimalną) bazę danych terminali, taką jak ncurses-baseDebian, możesz ich nie mieć. Bardziej powszechne byłoby xterm-256color, co jest wystarczająco blisko, aby używać go z vimem i tmuxem.

Na przykład, jeśli dodam to do mojego .tmux.confpliku, będzie działał tak, jak się spodziewasz w vimie:

set -g default-terminal "xterm-256color"

Dalsza lektura:

Thomas Dickey
źródło
Hmmm ... To działa :) Ale tylko częściowo. Działa tylko Control+ Left; Control+ Rightnie jest. Przetestuję i zaktualizuję później.
shivams,
1
Możesz mieć inne wiążące ingerencje w kontrolę + prawo (biorąc pod uwagę szczegóły, mogę udzielić porady).
Thomas Dickey,
Dziękuję za ofertę :) Trochę przestudiowałem i stwierdziłem, że rzeczywiście niektóre inne skróty klawiszowe powodują zakłócenia. Np. Na moim Macu działa to dobrze, podczas gdy w Linuksie (używając Guake) tak nie jest. Jednak nie mam racji i nie mogę uzyskać dostępu do mojego systemu Linux. Zaktualizuję po rozwiązaniu problemu.
shivams
@Thamam Dickey: Tymczasem akceptuję twoją odpowiedź, ponieważ rzeczywiście rozwiązuje problem.
shivams
@ThomasDickey Chciałbym tylko powiedzieć: „Go raibh míle maith agat”, co w języku irlandzkim dosłownie tłumaczy się jako „Obyś miał tysiąc dobrych rzeczy”. Dziękuję bardzo za tę odpowiedź. Jesteś gwiazdą.
Rob
2

Stąd możesz odpiąć kombinację klawiszy w byobu:

Utwórz plik za ~/.byobu/.tmux.confpomocą (lub dodaj, jeśli plik istnieje):

set-window-option -g xterm-keys on

Następnie dodaj następujące elementy do ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right
użytkownik1794469
źródło
To nie działa Dało mi to jednak solidny ołów. Spróbuję pójść w ślady i wymyślić jakieś rozwiązanie. Dzięki :)
shivams