Não é possível redimensionar as divisões do vim dentro do tmux

47

Tudo está funcionando bem fora de tmux. Mas tmuxnão consigo redimensionar o vim splits com o mouse. Eu tenho set mouse=ano meu .vimrc. Existe uma solução para isso?

.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
fonte
AFAIK, este é um problema conhecido / não resolvido. Obviamente, se você soltar o mouse em favor do teclado, isso se tornará praticamente um problema.
romainl
11
Você também tentou configurar ttymouse=xterm2no Vim ? Isso me permite arrastar as divisões do Vim dentro do tmux (parece padrão xterm2quando executado com TERM=xterm, o que provavelmente é o caso fora do tmux ).
31813 Chris Johnsen
@ChrisJohnsen it works !! por favor postar este comentário como uma resposta e eu vou aceitá-lo :)
holms
@romainl Olá! O redimensionamento de janelas com as ligações de teclas vim padrão é um IMHO bastante complicado. xD
trusktr
Esta não é uma questão de massa de vidraceiro
jasonszhao

Respostas:

69

Parece que arrastar a linha de status para redimensionar uma divisão não é possível quando a opção Vimttymouse é xterm; funciona quando o valor é xterm2embora. O último valor configura o Vim para solicitar um modo de relatório estendido do mouse que (entre outras coisas) forneça melhor suporte para arrastar. Esse modo estendido funciona apenas com versões mais recentes do xterm (e outros emuladores de terminal compatíveis, incluindo tmux ), portanto, não é o valor padrão.

Você pode usar algo como o seguinte .vimrcpara definir a opção:

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

(No entanto, não tenho certeza de como isso afetará as instâncias de tela reais , que também usam um TERM que começa com screen.)

Quando você está fora do tmux , a variável de ambiente TERM provavelmente é um xtermvalor -ish, e o Vim pesquisará a versão xterm usando a t_RVsequência de controle.

Chris Johnsen
fonte
3
Você mencionou não saber como isso afetará a tela (em oposição ao tmux ). A resposta é: a tela tem o mesmo problema, e essa correção exata também funciona lá.
Moss Collum
1
a condição não se torna verdadeira no meu Tmux, mas simplesmente setfunciona com a variável.
jasonszhao
1
Se você trabalha em um terminal que tem mais de 223 colunas, você precisará definir ttymousea sgrcomo xterm2não ir além disso. Você pode verificar se seus apoios vim sgrcom has("mouse_sgr"). Sempre deve ser seguro definir, em sgrvez de xterm2ser compatível com versões anteriores. See:help ttymouse
Sudo Bash
14

No meu caso, ele resolveu os dois casos: redimensionamento da divisão do mouse e problema de posição do mouse na tela ampla.

A correção é:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
tojocky
fonte
Isso funcionou para mim.
Paul Brannan