4

Я использую комбинацию 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".

Есть идеи?

4 ответа4

5

Резюме

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

2

Для тех, кто попадает сюда: это было исправлено в предварительной версии 0.64, которую вы можете скачать с официального сайта PuTTY.

0

У меня нет проблем с установкой 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.

0

Это единственный способ заставить прокрутку работать должным образом:

Положил:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

В файле: ~/.tmux.conf

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