Konfigurujesz klawisze funkcyjne w PuTTY dla Vima i Midnight Commandera pod tmux?

10

Po pierwsze, wiem, że mogę używać Alt+ 1(przez 9 i 0) do syntezy odpowiednich klawiszy funkcyjnych ( F1przez F10) w Midnight Commander. Pomógł mi wiele razy, ale domyślnie nadal intuicyjnie naciskam rzeczywiste klawisze funkcyjne.

Gist: Próbuję uruchomić zarówno Vima, jak i Midnight Commandera w tmuxsesji (czasami okno, czasem okienko), używając PuTTY.

Więc domyślnie mam następującą konfigurację PuTTY:

Konfiguracja klawiatury PuTTY

Z ESC[n~mapowaniem

Problem przy mapowaniu ( map <F1> :tab help<CR>oraz także nmapi imap) F1w Vimie polega na tym, że daje efekt ~(przełączanie wielkości liter). I rzeczywiście, gdy naciśnięty F1przez F5w powłoce, tylda ( ~) jest wynikiem, wraz z dzwonu. Jednak przy użyciu tego ustawienia klawisze funkcyjne działają doskonale w programie Midnight Commander.

Jest jedna dziwna rzecz w powyższym ustawieniu oprócz moich problemów z F1: I też „mapowałem” F5( set pastetoggle=<F5>) w Vimie. Dziwne, że działa jak urok, nawet jeśli F5klucz na skorupce daje ~coś podobnego F1itp.

Uwaga: gdy uruchomię Vima poza tmux, domyślne wiązanie (i moje zastąpienie) F1działa poprawnie!

Z mapowaniem „Linux”

Więc naturalnie próbowałem użyć ustawienia „Linux” w powyższym oknie dialogowym. Więc kiedy naciskam F1Vim przechodzi w tryb wstawiania na końcu linii (efekt A). Midnight Commander nie rozpoznaje żadnego klawisza funkcyjnego z tym ustawieniem. Na pewno wystarczy na powłoce F1daje mi Ai Bell ( i tak dalej).F2B

Czego tu brakuje? Jak mogę uzyskać jednolite zachowanie, w którym zarówno Midnight Commander, jak i Vim rozpoznają klawisze funkcyjne?


Dodatkowe informacje:

System zdalny to Ubuntu 14.04 z LANG=en_US.UTF-8.

TERMjest ustawiony na TERM=xtermzewnątrz tmuxsesji i TERM=screenwidziany z poziomu panelu lub okna.

Nie używam:

set-option -g default-terminal "screen-256color"

aby zastąpić typ terminala wewnątrz tmux.

0xC0000022L
źródło

Odpowiedzi:

8

Problemem jest na TERM=xtermzewnątrz tmux. Nie ma konfiguracji PuTTY, która pasowałaby do xtermopisu terminala, a niezgodność jest przekazywana do screenlub tmux(wybierz).

Zobacz na przykład w ncurses FAQ Dlaczego nie użyć TERM ustawionego na „xterm”? . Zalecenia należy oczywiście ustalić

TERM=putty

Szybkie sprawdzenie za pomocą tackpokazuje, że ta kombinacja ( TERM=putty, tmux) działa dla Ubuntu 14.04 (powinieneś był zainstalować ncurses-termpakiet, który to obejmuje).

Thomas Dickey
źródło
Dzięki. Właściwie nie mogłem znaleźć tackw ogóle, apt-file searchani z ani po instalacji pakietu, który poleciłeś. Ale toe -a|grep -i puttypotwierdza, że ​​istnieje kilka definicji terminali PuTTY (w tym a putty-256color). Spróbuję i skontaktuję się z Tobą, a także odpowiednio zaakceptuję.
0xC0000022L
Nie zauważyłem, że tack nie był dostępny w Ubuntu 14.04 (był już w Debianie, ale prawdopodobnie został przeoczony, kiedy rozdzieliłem go z tarballa źródłowego ncurses). Sprawdzam moją maszynę, wygląda na to, że uruchomiłem jeden z moich pakietów.
Thomas Dickey