Краткое содержание

Краткое содержание

Я использую комбинацию 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-1
  • vim: 7.3.429-2

Убунту 13.10информация о версии («прокрутка вверх » vimвнутриtmuxсломанный):

  • tmux: 1.8-4
  • vim: 7.4.000-1

Также следует отметить — автор gmane сообщил, что не наблюдал проблемы на tmux1.7 + vim7.3. Первое наблюдение автора проблемы было также на tmux1.8 + vim7.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

Связанный контент