Impossibile ridimensionare le divisioni vim all'interno di tmux


47

Tutto funziona benissimo al di fuori di tmux. Ma in tmuxnon riesco a ridimensionare le divisioni vim con il mouse. Ho set mouse=anel mio .vimrc. C'è una soluzione per questo?

.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

AFAIK questo è un problema noto / irrisolto. Ovviamente, se lasci cadere il mouse a favore della tastiera, questo diventa praticamente un problema.
romainl

11
Hai provato a impostare anche ttymouse=xterm2in Vim ? Questo mi permette di trascinare Vim si divide all'interno di tmux (sembra predefinito xterm2quando eseguito con TERM=xterm, che è probabilmente il caso al di fuori di tmux ).
Chris Johnsen,

@ChrisJohnsen funziona !! pubblica questo commento come risposta e lo accetterò :)
holms,

@romainl Ciao! Il ridimensionamento di Windows con i collegamenti ai tasti vim predefiniti è piuttosto ingombrante. xD
trusktr,

Questo non è un problema di stucco
jasonszhao,

Risposte:


69

Sembra che trascinare la linea di stato per ridimensionare una divisione non sia possibile quando l' opzione Vimttymouse è xterm; funziona quando il valore è xterm2però. Quest'ultimo valore configura Vim per chiedere una modalità estesa di report del mouse che (tra le altre cose) fornisca un migliore supporto al trascinamento. Questa modalità estesa funziona solo con le versioni più recenti di xterm (e altri emulatori di terminali compatibili, incluso tmux ), quindi non è il valore predefinito.

È possibile utilizzare qualcosa di simile al seguente .vimrcper impostare l'opzione:

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

(Tuttavia, non sono sicuro di come questo influenzerà le reali istanze dello schermo , che usano anche un TERM che inizia con screen.)

Quando sei al di fuori di tmux , la variabile d'ambiente TERM è probabilmente un xtermvalore -ish e Vim esaminerà la versione xterm usando la t_RVsequenza di controllo.


3
Dici di non sapere come questo influenzerà lo schermo (al contrario di tmux ). La risposta è: lo schermo ha lo stesso problema e anche questa correzione esatta funziona lì.
Moss Collum,

1
la condizione non diventa vera nel mio Tmux, ma semplicemente funziona setla variabile.
jasonszhao,

1
Se lavori in un terminale che ha oltre 223 colonne, dovrai impostare ttymousesu sgrcome xterm2non andare oltre. Puoi verificare se il tuo vim supporta sgrcon has("mouse_sgr"). Dovrebbe essere sempre sicuro da impostare sgrinvece che xterm2perché retrocompatibile. Vedi:help ttymouse
Sudo Bash,

14

Nel mio caso ha risolto entrambi i casi: ridimensionamento della divisione del mouse e problema di posizione del mouse per lo schermo largo.

La correzione è:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end

Questo ha funzionato per me.
Paul Brannan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.