鼠标通过tmux在vim中滚动,如何配置?

Dag*_*ago 5 vim putty scrolling tmux

我正在使用 PuTTY、tmux 和 vim 的组合。如果我只是打开与 PuTTY 的 SSH 连接,然后打开 vim,鼠标滚动会按预期工作。但是,如果我打开 tmux 然后在 tmux 中打开 vim,则滚动只能部分起作用,这意味着我可以像往常一样向下滚动,但无法向上滚动。如果我向上滚动,缓冲区只会“上下”猛拉,并停留在同一个位置。“set -g mode-mouse on”似乎没有什么区别(我之后确实用“tmux source-file ~/.tmux.conf”重新加载了conf),无论哪种方式都以相同的方式工作。

编辑:我还注意到滚动在终端中的 tmux 中像预期的那样工作,但在 vim 中则不然。我在 vim 中只有与鼠标/终端相关的选项是“set mouse=a”和“set t_Co=256”。

有任何想法吗?

daB*_*mer 5

概括

问题显然是从 PuTTY 开始的,但并不一定就此止步。下面有一个指向 PuTTY 问题的潜在修复程序的链接,以及对整个问题的分析。


问题描述

配置

vimmouse=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
Run Code Online (Sandbox Code Playgroud)

用例

一个典型的用例是使用vim 里面tmux。避免tmux和之间的负面交互vim是禁用tmux滚动的主要原因之一。

行为

请注意,以下情况仅在使用 PuTTY 作为终端模拟器时发生,在 gnome-terminal 或任何其他经过测试的 Linux 终端模拟器中无法重现。

当尝试使用鼠标中“滚动”vim 里面一的tmux会议上,动作只是失败。正如 OP 所描述的那样,通常可以看到缓冲区“上下”抖动,好像每次滚动尝试都会发生反作用(更多内容见下文)。

这与 OP 的描述基本相同,但在我的解释或 OP 的问题中不清楚的情况下,重新概括一下。


潜在解决方案——PuTTY

似乎存在一个问题,即 PuTTY 会在每个 ScrollDown/ScrollUp 事件中发送一个无关的 ScrollDown 事件。这意味着每次向上滚动的尝试都会被取消并且没有任何反应。相反,向下滚动时,每个滚动事件都会加倍。该行为是很容易验证通过查看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'fixed' 造成了回归。或者,可能是较新版本的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 海报报告没有观察到tmux1.7 + vim7.3上的问题。海报对这个问题的第一次观察也是tmux1.8 + vim7.4。


希望至少,此答案为致力于(或坚持使用)PuTTY 的任何人提供了解决此问题的选项。除此之外,希望有人能够理解上面的其他观察结果,并帮助该主题得到适当的解决。