Не вдається змінити розмір розділів vim всередині tmux


47

Все працює добре поза межами 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

AFAIK - це відоме / невирішене питання. Звичайно, якщо ви кинете мишу на користь вашої клавіатури, це стає значною мірою проблемою.
romainl

11
Ви пробували також налаштування ttymouse=xterm2у Vim ? Це дозволяє мені перетягувати Vim, що розбивається всередині tmux (це, здається, за замовчуванням xterm2при запуску TERM=xterm, що, мабуть, має місце поза tmux ).
Кріс Джонсен

@ChrisJohnsen це працює !! Будь ласка, опублікуйте цей коментар як відповідь, і я прийму його :)
зупиняється на

@romainl Привіт! Змінення розміру вікон із типовими прив'язками клавіш vim - це досить громіздкий IMHO. 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

(Хоча я не впевнений, як це вплине на фактичні екземпляри екрана , в яких також використовується термін, який починається з screen.)

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


3
Ви згадуєте не знаючи, як це вплине на екран (на відміну від tmux ). Відповідь: екран має таку ж проблему, і це точно виправлення працює і там.
Moss Collum

1
умова не стає істинним у моєму Tmux, а просто setвідтіняє роботу змінної.
jasonszhao

1
Якщо ви працюєте в терміналі , який має більш ніж 223 стовпців, вам потрібно буде встановити ttymouseв sgrякості xterm2не виходить за рамки цього. Ви можете перевірити , якщо ваш ВІМ підтримує 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.