Impossible de redimensionner les fractionnements de vim dans tmux

47

Tout fonctionne bien en dehors de tmux. Mais dans tmuxje ne peux pas redimensionner vim se scinde avec la souris. J'ai set mouse=adans mon .vimrc. Y a-t-il une solution pour cela?

.tmux.conf:

$ cat ~/.tmux.conf
set-option -g mode-mouse on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on
holms
la source
Autant que je sache, il s'agit d'un problème connu / non résolu. Bien sûr, si vous déposez votre souris en faveur de votre clavier, cela devient quasiment un problème.
Romainl
11
Avez-vous essayé aussi de vous installer ttymouse=xterm2dans Vim ? Cela me permet de faire glisser les fractionnements de Vim à l’ intérieur de tmux (il semble que par défaut, xterm2lorsqu’il est exécuté TERM=xterm, ce qui est probablement le cas en dehors de tmux ).
Chris Johnsen
@ChrisJohnsen ça marche !! merci de poster ce commentaire comme une réponse et je l'accepterai :)
holms
@romainl Bonjour! Redimensionner les fenêtres avec les raccourcis par défaut vim est assez simple à mon humble avis. xD
trusktr
Ce n'est pas un problème de mastic
jasonszhao

Réponses:

69

Il semble que faire glisser la ligne d'état pour redimensionner une division n'est pas possible lorsque l' option Vimttymouse est xterm; cela fonctionne quand la valeur est xterm2bien. Cette dernière valeur configure Vim pour qu'il demande un mode de rapport de souris étendu qui (entre autres choses) offre une meilleure prise en charge du glissement. Ce mode étendu ne fonctionne qu'avec les versions les plus récentes de xterm (et d’autres émulateurs de terminaux compatibles, y compris tmux ). Il ne s’agit donc pas de la valeur par défaut.

Vous pouvez utiliser quelque chose comme ce qui suit dans votre .vimrcpour définir l’option:

set mouse+=a
if &term =~ '^screen'
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
endif

(Cependant, je ne suis pas sûr de l'impact que cela aura sur les instances d' écran réelles , qui utilisent également un TERM qui commence par screen.)

Lorsque vous êtes en dehors de tmux , la variable d'environnement TERM est probablement une xtermvaleur -ish et Vim recherchera la version xterm à l'aide de la t_RVséquence de contrôle.

Chris Johnsen
la source
3
Vous mentionnez ne pas savoir comment cela affectera l' écran (par opposition à tmux ). La réponse est la suivante: screen a le même problème et ce correctif exact fonctionne également.
Moss Collum
1
la condition ne devient pas vraie dans mon Tmux, mais simplement que setla variable fonctionne.
jasonszhao
1
Si vous travaillez dans un terminal comportant plus de 223 colonnes, vous devez définir la valeur ttymousesur, sgrcar xterm2cela ne va pas plus loin. Vous pouvez vérifier si votre vim prend sgren charge avec has("mouse_sgr"). Il devrait toujours être sûr de régler sgrau lieu de xterm2parce qu'il est compatible avec les versions antérieures. Voir:help ttymouse
Sudo Bash
14

Dans mon cas, cela a résolu les deux cas: redimensionnement de la souris et problème de position de la souris pour un écran large.

Le correctif est:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
tojocky
la source
Cela a fonctionné pour moi.
Paul Brannan