Clés foirées dans vim lors de l'exécution dans tmux


9

J'ai joué avec tmux et j'adore ça. Cependant, il y a un problème gênant lors de l'exécution de vim à l'intérieur.

D'une manière ou d'une autre, les touches fléchées sont remappées, mais uniquement à certaines heures, comme lors du lancement de Command-T, si j'essaie de faire défiler la liste des fichiers, la commande est annulée et je suis jeté en mode insertion, et en fonction de la touche fléchée J'ai appuyé, un A, B, C ou D est inséré.

Si j'utilise les flèches pour parcourir un tampon par exemple, elles fonctionnent correctement.

Des idées?

Merci!


1
Qu'est-ce qui est $TERMdehors tmux? Et à l'intérieur? Il semble que quelque chose se passe avec les modes d'application et de clavier normal.
pause jusqu'à nouvel ordre.

En dehors de tmux: xterm, à l'intérieur: écran ... donc si je lance TERM=screen vimje vois le même comportement, donc je dois réparer l'écran?
Ivan

Réponses:


13

J'ai simplement ajouté set -g default-terminal "xterm"à mon .tmux.conf

Cela a fait que tmux utilise xterm au lieu de l'écran, donc la vie est belle et je n'ai pas à me soucier de piétiner les raccourcis clavier.


5
Mieux comme ça set -g default-terminal "xterm-256color". Sinon, je ne pouvais pas remarquer en mode visuel en raison de couleurs limitées.
Macario

1
J'ai dû combiner cela avec set -g xterm-keys on.
Dan Stahlke

4
Il convient de noter que la page de manuel de tmux indique de ne jamais définir default-terminal. Je ne sais pas quelles sont les ramifications.
Dan Stahlke

1
Étant donné l'avertissement qui default-terminalne devrait pas être défini, il existe peut-être une meilleure solution du côté vim: link .
Dan Stahlke

Ne fonctionne pas dans mon cas ...
Blaszard

6

Enfin, j'ai trouvé ma réponse ici: lors de l'exécution de l'écran sur OSX, la commande + r gâche les touches fléchées dans vim sur tous les écrans

La chose étrange est que je n'ai ajouté qu'un mappage à mon fichier .vimrc:

map <Esc>[B <Down>

Mais ce mappage unique permet à TOUTES les touches fléchées de fonctionner correctement ...


D'une certaine manière ... c'était la seule solution qui fonctionnait pour moi sur Centos 6.3
Patryk

Cela n'a absolument aucun sens pour moi, mais l'ajout d'un seul mappage semble également réparer toutes les clés pour moi. Encore plus étrange (du moins pour moi) le mappage direct pour la pression de touche en mode insertion ne le résout pas ( map ^[A <Up>fonctionne en appuyant sur Ctrl + V <Up> et en supprimant le O, en map ^[OA <Up>appuyant sur Ctrl + V <Up> et en laissant le O ne pas 't). Je ne comprends pas ... mais peu importe. Mes clés fonctionnent maintenant. Je vous remercie.
ND Geek


1

Juste au cas où quelqu'un se mettrait en colère avec ces solutions qui ne fonctionnent pas.

Vérifiez que vous n'utilisez pas réellement le plugin tmux + vim + AutoClose vim. La fermeture automatique mappe quelque chose qui vous fait insérer des caractères ABCD dans la ligne précédente!

Je viens d'effacer le plugin et ça fonctionne bien maintenant


Je vous remercie! C'était tout pour moi. J'ai fini par utiliser ce plugin de fermeture automatique à la place. Il offre des fonctionnalités similaires.
ollpu

0

Command-T fait quelque chose de stupide en mappant lors de l'exécution dans un terminal. Il saute le mappage si $ TERM est vt100 * ou xterm *, mais ce n'est pas une bonne solution.


0

Pour les personnes qui souhaitent déplacer le curseur en mode ligne de commande, jetez un œil à cet article de blog. J'ai fini par ajouter huit lignes dans mon vimrc;

" Needed for tmux and vim to play nice
" Needed for tmux and vim to play nice
map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

" Console movement
cmap <Esc>[A <Up>
cmap <Esc>[B <Down>
cmap <Esc>[C <Right>
cmap <Esc>[D <Left>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.