Configurer les touches de fonction dans PuTTY pour Vim et Midnight Commander sous tmux?

10

Tout d'abord, je sais que je peux utiliser Alt+ 1(jusqu'à 9 et 0) pour synthétiser les touches de fonction respectives ( F1jusqu'à F10) dans Midnight Commander. Cela m'a aidé à plusieurs reprises, mais par défaut, j'appuie toujours intuitivement sur les touches de fonction réelles .

Gist: J'essaie d'exécuter Vim et Midnight Commander dans une tmuxsession (parfois fenêtre, parfois volet), en utilisant PuTTY.

Donc, par défaut, j'ai la configuration PuTTY suivante:

Configuration du clavier PuTTY

Avec ESC[n~cartographie

Le problème maintenant lors du mappage ( map <F1> :tab help<CR>, et aussi nmapet imap) F1dans Vim, est qu'il donne l'effet de ~(basculer la casse). Et en effet , si je presse à F1travers F5la coquille, le tilde ( ~) est le résultat, le long d'une cloche. Les touches de fonction fonctionnent parfaitement bien dans Midnight Commander, cependant, en utilisant ce paramètre.

Il y a une chose étrange à propos du paramètre ci-dessus en plus de mes problèmes avec F1: j'ai également "mappé" F5( set pastetoggle=<F5>) dans Vim. Curieusement, cela fonctionne comme un charme, même si la F5clé sur la coque donne un ~peu comme F1etc.

Remarque: lors de l'exécution de Vim en dehors de tmux, la liaison par défaut (et ma substitution) F1fonctionne correctement!

Avec la cartographie "Linux"

J'ai donc naturellement essayé d'utiliser le paramètre "Linux" dans la boîte de dialogue ci-dessus. Donc quand j'appuie, F1Vim passe en mode insertion à la fin de la ligne (effet de A). Midnight Commander ne reconnaît aucune des touches de fonction avec ce paramètre. Effectivement, sur la coquille F1me donne Aet une cloche ( F2un Bet ainsi de suite).

Qu'est-ce que j'oublie ici? Comment puis-je obtenir un comportement uniforme où Midnight Commander et Vim reconnaîtront les touches de fonction?


Information additionnelle:

Le système distant est Ubuntu 14.04 avec LANG=en_US.UTF-8.

TERMest défini en TERM=xtermdehors de la tmuxsession et TERM=screenvu de l'intérieur d'un volet ou d'une fenêtre.

Je n'utilise pas:

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

pour remplacer le type de terminal à l'intérieur tmux.

0xC0000022L
la source

Réponses:

8

Le problème vient de l' TERM=xtermextérieur tmux. Il n'y a pas de configuration de PuTTY qui corresponde à la xtermdescription du terminal, et la non-correspondance alimente screenou tmux(faites votre choix).

Voir par exemple, dans la FAQ ncurses Pourquoi ne pas simplement utiliser TERM défini sur "xterm"? . La recommandation est bien sûr de fixer

TERM=putty

Une vérification rapide à l'aide tackmontre que cette combinaison ( TERM=putty, tmux) fonctionne pour Ubuntu 14.04 (vous devriez avoir installé le ncurses-termpackage, qui inclut cela).

Thomas Dickey
la source
Merci. En fait, je n'ai pas pu trouver tackdu tout, ni avec apt-file searchni après l'installation du paquet que vous avez recommandé. Mais toe -a|grep -i puttyconfirme qu'il existe plusieurs définitions de terminal PuTTY (y compris a putty-256color). Je vais l'essayer et je vous répondrai et accepterai également en conséquence.
0xC0000022L
Je n'avais pas remarqué que le tack n'était pas dans Ubuntu 14.04 (il fait partie de Debian depuis un certain temps, mais probablement ignoré lorsque je l'ai séparé de l'archive source de ncurses). En vérifiant ma machine, il semble que j'exécutais l'un de mes packages.
Thomas Dickey