Nie można zmienić rozmiaru podziałów vim w tmux

47

Poza tym wszystko działa dobrze tmux. Ale tmuxnie mogę zmienić rozmiaru podziałów vima za pomocą myszy. Mam set mouse=aw moim .vimrc. Czy jest na to rozwiązanie?

.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
źródło
AFAIK jest to znany / nierozwiązany problem. Oczywiście, jeśli upuścisz mysz na klawiaturę, stanie się to praktycznie bezproblemowe.
romainl
11
Czy próbowałeś również ustawienie ttymouse=xterm2w vim ? To pozwala mi przeciągać wokół podziałów Vima wewnątrz tmux (wydaje się, że domyślnie jest xterm2to uruchamiane przy użyciu TERM=xterm, co prawdopodobnie ma miejsce poza tmux ).
Chris Johnsen
@ChrisJohnsen to działa !! proszę opublikować ten komentarz jako odpowiedź, a ja go zaakceptuję :)
holms
@romainl Hello! Zmiana rozmiaru okien z domyślnymi powiązaniami klawiszy vim jest dość skomplikowana IMHO. xD
trusktr
To nie jest kwestia kitu
jasonszhao

Odpowiedzi:

69

Wygląda na to, że przeciągnięcie linii statusu w celu zmiany rozmiaru podziału nie jest możliwe, gdy opcja Vimttymouse jest xterm; to działa, gdy wartość jest xterm2jednak. Ta ostatnia wartość konfiguruje Vima, aby poprosił o tryb raportowania myszy rozszerzonej, który (między innymi) zapewnia lepszą obsługę przeciągania. Ten tryb rozszerzony działa tylko z nowszymi wersjami xterm (i innymi kompatybilnymi emulatorami terminali, w tym tmux ), więc nie jest to wartość domyślna.

Możesz użyć czegoś takiego jak poniżej, .vimrcaby ustawić opcję:

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

(Nie jestem jednak pewien, jak wpłynie to na rzeczywiste wystąpienia ekranu , które również używają TERM rozpoczynającego się od screen.)

Kiedy jesteś poza tmux , zmienna środowiskowa TERM jest prawdopodobnie xtermwartością -ish, a Vim będzie sprawdzał wersję xterm przy użyciu t_RVsekwencji kontrolnej.

Chris Johnsen
źródło
3
Wspominasz, że nie wiesz, jak wpłynie to na ekran (w przeciwieństwie do tmux ). Odpowiedź brzmi: ekran ma ten sam problem i ta dokładna poprawka również tam działa.
Moss Collum,
1
warunek nie jest spełniony w moim Tmuxie, ale po prostu setzmienna działa.
jasonszhao
1
Jeśli pracujesz w terminalu, który ma ponad 223 kolumn, będzie trzeba ustawić ttymousesię sgrjako xterm2nie wykracza poza to. Można sprawdzić, czy vim podpory sgrz has("mouse_sgr"). Powinna ona być zawsze ustawiony bezpieczny sgrzamiast xterm2ponieważ jest wstecznie kompatybilne. Zobacz:help ttymouse
Sudo Bash
14

W moim przypadku rozwiązano oba przypadki: zmiana rozmiaru podziału myszy i problem z pozycją myszy dla ekranu szerokiego.

Poprawka polega na:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
tojocky
źródło
To zadziałało dla mnie.
Paul Brannan