Problème d'utilisation des touches Ctrl + Flèche dans Vim lors de l'utilisation de Byobu avec tmux

12

Dans Vim, j'avais défini les touches Ctrl + Flèche pour ignorer les mots. Cela fonctionne très bien lors de l'exécution de Vim à l'intérieur du gnome-terminal.

Cependant, lors de l'utilisation de byobu (tmux), il affiche un comportement étrange: il supprime tout après le curseur.

Pour référence, voici mes paramètres vim:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w
shivams
la source

Réponses:

7

Le problème est double. Tout d'abord, tmuxpar défaut, convertit les touches fléchées de contrôle d'un type de séquence d'échappement en un autre. Donc les touches spéciales telles que controlleftsont envoyées vimsans modification, par exemple left. Si vous utilisez cat -vpour voir les différentes séquences d'échappement, vous pourriez voir quelque chose comme ça

^[OD

par rapport à cela (en dehors de tmux):

^[[1;5D

La ligne

set-window-option -g xterm-keys on

corrige cet aspect. L'autre partie est que tmuxpar défaut utilise la description du terminal pour screen. Cette description de terminal ne décrit pas les touches de direction. Ces entrées de la base de données du terminal seraient les plus appropriées pour VTE (gnome-terminal):

Il y en a d'autres, comme

qui serait automatiquement sélectionné lors de l' exécution dans le screencas correspondant à l' TERMextérieur étaient vte, vte-256coloretc. tmuxne le fait pas-sélection automatique; vous devez modifier son fichier de configuration.

Soit dit en passant, il n'y a pas d'entrée "screen.xterm" car cela interférerait avec certaines utilisations de screen. Il n'y a aucun conflit avec TERM=xterm-new.

Si vous avez une base de données de terminaux par défaut (minimale) comme ncurses-basedans Debian, vous ne les avez peut-être pas. Le plus courant serait xterm-256color, qui est assez proche pour être utilisé avec vim et tmux.

Par exemple, si j'ajoute ceci à mon .tmux.conffichier, il se comporte comme vous vous attendez dans vim:

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

Lectures complémentaires:

Thomas Dickey
la source
Hmmm ... Cela fonctionne :) Mais seulement partiellement. Seul Control+ Leftfonctionne; Control+ Rightne l'est pas. Je testerai et mettrai à jour plus tard.
shivams
1
Vous pouvez avoir une autre liaison interférant avec le contrôle + droit (étant donné les détails, je peux offrir des conseils).
Thomas Dickey
Merci pour l'offre :) J'ai enquêté un peu et j'ai constaté qu'en effet, d'autres raccourcis clavier provoquaient des interférences. Par exemple, sur mon Mac, cela fonctionne bien, tandis que sous Linux (en utilisant Guake), cela ne fonctionne pas. Cependant, je suis en dehors de la station et je ne peux pas accéder à mon Linux. Je mettrai à jour lorsque je résoudrai le problème.
shivams
@Thomam Dickey: En attendant, j'accepte votre réponse car elle résout effectivement le problème.
shivams
@ThomasDickey Je voudrais juste dire, "Go raibh míle maith agat" qui en irlandais est littéralement traduit par "Puissiez-vous avoir mille bonnes choses." Merci beaucoup pour cette réponse. Tu es une star.
Rob
2

De là, vous pouvez dissocier la combinaison de touches dans byobu:

Créez un fichier ~/.byobu/.tmux.confavec (ou ajoutez si le fichier existe):

set-window-option -g xterm-keys on

Ajoutez ensuite ce qui suit à ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right
user1794469
la source
Ça ne marche pas. Mais cela m'a donné une solide avance. Je vais essayer de suivre l'exemple et trouver une solution. Merci :)
shivams