
Я использую комбинацию PuTTY, tmux и vim. Если я просто открываю SSH-соединение с PuTTY, а затем открываю vim, прокрутка мышью работает как и ожидалось. Но если я открываю tmux, а затем открываю vim внутри tmux, прокрутка работает только частично, то есть я могу прокручивать вниз как обычно, но не могу прокручивать вверх. Если я прокручиваю вверх, буфер просто дергается "вверх-вниз" и просто остается на том же месте. "set -g mode-mouse on" похоже не имеет значения (я перезагружаю conf после этого с помощью "tmux source-file ~/.tmux.conf"), работает одинаково в любом случае.
Редактировать: Я также заметил, что прокрутка работает как и ожидалось в tmux в терминале, но не в vim. Единственные параметры, связанные с мышью/терминалом, которые у меня есть в vim, это "set mouse=a" и "set t_Co=256".
Есть идеи?
решение1
Краткое содержание
Проблема явно начинается с 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-terminal или любом другом протестированном эмуляторе терминала Linux.
При попытке «прокрутить» вверх с помощью мышиvim
внутрисеанса tmux
, действие просто не выполняется. Как описывает OP, часто можно увидеть, как буфер дергается «вверх-вниз», как будто при каждой попытке прокрутки происходит противодействие (подробнее об этом ниже).
По сути, это то же самое, что и описание автора, но повторено на всякий случай, если что-то непонятно в моем объяснении или вопросе автора.
Потенциальное решение — PuTTY
Кажется, есть проблема, когда 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-term или что-то подобное), но исправление с использованием этого типа решения не было найдено. Более того, многочисленные отчеты об этой же проблеме (включая эту ветку) подтверждают существование проблемы.
Из-за взаимозависимой природы проблемы и версий соответствующего программного обеспечения, похоже, проблема не ограничивается одним приложением. Возможно, более новая версия tmux
/ vim
«исправила» что-то, что создало регрессию. Или, возможно, более новая версия tmux
/ vim
просто выявила существующую проблему в PuTTY. В любом случае, потребуется дополнительное расследование для полного устранения. Пожалуйста, найдите ниже соответствующую информацию о версии, если это может помочь кому-то в их расследовании.
Информация о версии
Убунту 12.04информация о версии («прокрутка вверх» vim
внутриtmux
работает):
tmux
: 1.6-1vim
: 7.3.429-2
Убунту 13.10информация о версии («прокрутка вверх » vim
внутриtmux
сломанный):
tmux
: 1.8-4vim
: 7.4.000-1
Также следует отметить — автор gmane сообщил, что не наблюдал проблемы на tmux
1.7 + vim
7.3. Первое наблюдение автора проблемы было также на tmux
1.8 + vim
7.4.
Надеюсь, по крайней мере, этот ответ предоставит любому, кто предан (или застрял) с PuTTY, возможность обойти эту проблему. Кроме того, надеюсь, кто-то сможет понять дополнительные наблюдения выше и помочь довести тему до надлежащего решения.
решение2
У меня нет проблем с установкой Ubuntu 16.04. tmux — это версия apt-get по умолчанию. Vim — версия 8. PuTTY — версия 0.67
Прокрутка и нажатие кнопок работают внутри vim, если он размещен в сеансе tmux.
~/.tmux.conf
set-option -g mouse on
Имейте в виду, что параметры tmux для управления мышью изменились по сравнению с более ранними версиями.
~/.vimrc
set mouse=a
Быть в курсе, чтоэтот ответпредполагает, что причиной проблемы может быть плагин vim.
решение3
Для тех, кто сюда попал: эта проблема была исправлена в предварительной версии 0.64, которую можно загрузить с официального сайта PuTTY.
решение4
Это единственный способ, с помощью которого мне удалось заставить прокрутку работать правильно:
Помещать:
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
В файле:~/.tmux.conf