Невозможно изменить размер разделений vim внутри tmux


47

Все отлично работает за пределами tmux. Но tmuxя не могу изменить размер Vim Split с помощью мыши. У меня есть set mouse=aв моем .vimrc. Есть ли решение для этого?

.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 это известная / нерешенная проблема. Конечно, если вы уроните мышь в пользу клавиатуры, это не станет проблемой.
romainl

11
Вы пробовали также установить ttymouse=xterm2в Vim ? Это позволяет мне перетаскивать Vim- разбиения внутри tmux (кажется, по умолчанию используется xterm2при запуске с TERM=xterm, что, вероятно, имеет место за пределами tmux ).
Крис Джонсен

@ChrisJohnsen это работает !! пожалуйста, оставьте этот комментарий как ответ, и я приму его :)
holms

@romainl Привет! Изменение размеров окон с привязками по умолчанию к vim является довольно громоздким ИМХО. xD
trusktr

Это не проблема замазки
jasonszhao

Ответы:


69

Оказывается , что перетащив строку состояния , чтобы изменить размер раскола не представляется возможным , когда Вим вариант ttymouseявляется xterm; это работает, когда значение xterm2хотя. Последнее значение настраивает Vim для запроса расширенного режима отчетов мыши, который (помимо прочего) обеспечивает лучшую поддержку перетаскивания. Этот расширенный режим работает только с более новыми версиями xterm (и другими совместимыми эмуляторами терминала, включая tmux ), поэтому он не является значением по умолчанию.

Вы можете использовать что-то вроде следующего .vimrcдля установки опции:

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

(Хотя я не уверен, как это повлияет на фактические экземпляры экрана , которые также используют TERM, начинающийся с screen.)

Когда вы находитесь за пределами tmux , переменная окружения TERM, вероятно, имеет xtermзначение -ish, и Vim будет проверять версию xterm , используя t_RVуправляющую последовательность.


3
Вы упомянули, что не знаете, как это повлияет на экран (в отличие от tmux ). Ответ: экран имеет ту же проблему, и это точное исправление работает там же.
Мосс Коллум

1
условие не становится истинным в моем Tmux, просто setработает переменная ting.
jasonszhao

1
Если вы работаете в терминале, который имеет более 223 столбцов, вам нужно будет установить ttymouseзначение sgras xterm2, не выходя за рамки этого. Вы можете проверить , если ваш VIM поддерживает sgrс has("mouse_sgr"). Он всегда должен быть безопасным для установки, sgrа не xterm2потому, что он обратно совместим. Смотрите:help ttymouse
Судо Баш

14

В моем случае это решило оба случая: изменение размера мышки и проблема положения мыши для широкого экрана.

Исправление:

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

Это сработало для меня.
Пол Браннан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.