43

Все отлично работает вне tmux . Но в tmux я не могу изменить размер сплит vim с помощью мыши. Я 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

2 ответа2

65

Похоже, что перетаскивание строки состояния для изменения размера разбиения невозможно, если для опции Vim 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 .

11

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .