Резюме
Проблема явно начинается с PuTTY, но не обязательно останавливается на этом. Ниже приведена ссылка на потенциальное решение проблемы PuTTY, а также анализ проблемы в целом.
Описание проблемы
конфигурация
vim
с mouse=a
включен для прокрутки, выделения и перемещения курсора
tmux
, без включенной функциональности мыши tmux
, т.е.
set -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off
Случай использования
Типичным примером использования является использование vim
внутри tmux
. Избегание негативных взаимодействий между tmux
и vim
является одной из основных причин отключения прокрутки tmux
.
Поведение
Обратите внимание, что следующее происходит только при использовании PuTTY в качестве эмулятора терминала и не воспроизводится в gnome-терминал или любом другом протестированном эмуляторе терминала Linux.
При попытке прокрутки вверх с помощью мыши в vim
внутри сеанса tmux
действие просто завершается неудачей. Как описывает OP, часто можно увидеть, как буфер дергается «вверх и вниз», как будто с каждой попыткой прокрутки происходит обратное действие (подробнее об этом ниже).
По сути, это то же самое, что и описание ОП, но повторяется на тот случай, если что-то неясно в моем объяснении или в вопросе ОП.
Потенциальное решение - замазка
Кажется, существует проблема, когда PuTTY отправляет постороннее событие ScrollDown с каждым событием ScrollDown/ScrollUp. Это означает, что каждая попытка прокрутки вверх отменяется и ничего не происходит. И наоборот, при прокрутке вниз каждое событие прокрутки удваивается. Поведение легко проверить, посмотрев на поведение прокрутки vim
сначала вне tmux
(где прокрутка работает должным образом), а затем внутри tmux
(где прокрутка вверх не работает, и одна попытка прокрутить прокрутку вниз вдвое больше).
Согласно следующему потоку gmane, описанная выше проблема решается с помощью патча от Putty-X (https://github.com/atsepkov/putty-X/commit/bbcedf5a85ca1ccaa27005e7f7ebeb4c8a783b88):
Ссылка на ветку gmane: http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/5498.
ПРИМЕЧАНИЕ. Я не проверял вышеуказанное решение самостоятельно, поэтому просмотрите ветку gmane для получения дополнительной информации.
Дополнительные наблюдения
Где это действительно становится интересным является то , что это новый вопрос не воспроизводимые с использованием старых версий tmux
/vim
Используя ту же версию PuTTY (0.63), проблема может быть активно продемонстрирована в системе Ubuntu 13.10, в то время как в системе Ubuntu 12.04 проблема не обнаружена.
Поначалу проблема, похоже, указывает на дельту конфигурации системы (т. Е. Отсутствует термин ncurses или аналогичный), но не было найдено исправления с использованием этого типа решения. Кроме того, многочисленные сообщения об этой же проблеме (включая эту ветку), как правило, поддерживают существование проблемы.
Из-за взаимозависимой природы проблемы и версий соответствующего программного обеспечения, похоже, проблема не ограничивается одним приложением. Возможно, более новая версия tmux
/vim
«исправила» что-то, что привело к регрессии. Или, может быть, более новая версия tmux
/vim
просто выявила существующую проблему в PuTTY. В любом случае, потребуется полное дополнительное расследование, чтобы полностью сгладить. Ниже приведена соответствующая информация о версии, если это может помочь любому в их расследовании.
Информация о версии
Ubuntu 12,04 Информация о версии («прокрутка вверх» в vim
внутри tmux
работ):
tmux
: 1.6-1
vim
: 7.3.429-2
Ubuntu 13,10 Информация о версии («прокрутка вверх» в vim
внутри tmux
сломана):
tmux
: 1,8-4
vim
: 7.4.000-1
Также следует отметить, что постер gmane сообщил, что не наблюдал проблему на tmux
1.7 + vim
7.3. Первое замечание автора проблемы также было с tmux
1.8 + vim
7.4.
Надеемся, что, по крайней мере, этот ответ предоставит любому, кто посвятил (или застрял) PuTTY, возможность обойти эту проблему. Кроме того, мы надеемся, что кто-то сможет разобраться в приведенных выше дополнительных замечаниях и помочь найти правильное решение.