web-dev-qa-db-ja.com

tmuxを介してvimでマウスをスクロールします。設定方法は?

PuTTY、tmux、vimを組み合わせて使用​​しています。 PuTTYでSSH接続を開いてからvimを開くと、マウスのスクロールは期待どおりに機能します。しかし、tmuxを開いてからtmux内でvimを開くと、スクロールは部分的にしか機能しません。つまり、通常どおり下にスクロールできますが、上にスクロールできません。上にスクロールすると、バッファが「上下に」急に動き、同じ場所に留まります。 「set-gmode-mouse on」は違いがないようです(後で「tmuxsource-file〜/.tmux.conf」でconfをリロードします)、どちらの方法でも同じように機能します。

編集:私はまた、スクロールがターミナルのtmuxで期待どおりに機能するが、vimでは機能しないことに気づきました。私がvimに持っているマウス/ターミナルに関連するオプションは「setmouse = a」と「sett_Co = 256」だけです。

何か案は?

5
Dago

概要

問題は明らかにPuTTYから始まりますが、必ずしもそれだけではありません。以下に、PuTTYの問題の潜在的な修正へのリンクと、問題全体の分析があります。


問題の説明

構成

vim with mouse=aスクロール、選択、およびカーソル移動が有効

tmuxtmuxマウス機能が有効になっていない、つまり次のとおりです。

set -g mode-mouse off
set -g mouse-select-pane off
set -g mouse-resize-pane off
set -g mouse-select-window off

使用事例

典型的な使用例は、vimtmux inside を使用することです。 tmuxvimの間の負の相互作用を回避することは、tmuxスクロールを無効にする主な理由の1つです。

動作

以下は、PuTTYをターミナルエミュレーターとして使用している場合にのみ発生し、gnome-terminalまたはその他のテスト済みのLinuxターミナルエミュレーターでは再現できないことに注意してください。

vimセッションのtmux inside でマウスを使用して「スクロールアップ」しようとすると、アクションは単に失敗します。 OPが説明しているように、多くの場合、スクロールを試行するたびにカウンターアクションが発生しているように、バッファが「上下に」ジャークするのを見ることができます(これについては以下で詳しく説明します)。

これは基本的にOPの説明と同じですが、私の説明やOPの質問で何かが明確でない場合に備えて、要約します。


考えられる解決策-PuTTY

PuTTYがすべてのScrollDown/ScrollUpイベントで無関係なScrollDownイベントを送信するという問題があるようです。これは、上にスクロールしようとするたびにキャンセルされ、何も起こらないことを意味します。逆に、下にスクロールすると、各スクロールイベントが2倍になります。 vimのスクロール動作を確認することで動作を簡単に検証できます最初の外側tmux(スクロールが正しく機能する場所)、および2番目の内側tmux(上にスクロールしない場所) 、および1回下にスクロールしようとすると、2倍スクロールします)。

次の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システムで問題を積極的に示すことができますが、Ubuntu12.04システムでは問題は発生しません。

最初は、問題はシステム構成のデルタ(つまり、ncurses-termなどの欠落)を示しているように見えますが、このタイプのソリューションを使用した修正は特定されていません。さらに、この同じ問題(このスレッドを含む)の複数のレポートは、問題の存在をサポートする傾向があります。

問題と関連ソフトウェアのバージョンは相互に依存しているため、問題は単一のアプリケーションに限定されていないようです。 tmux/vimの新しいバージョンが、リグレッションを作成したものを「修正」した可能性があります。または、新しいバージョンのtmux/vimが、PuTTYの既存の問題を単に公開した可能性があります。いずれにせよ、完全に解決するには、追加の調査が必要になります。これが調査の誰かを助けることができるならば、以下のいくつかの適切なバージョン情報を見つけてください。


バージョン情報

Ubuntu 12.04 バージョン情報(vim内のtmuxの「スクロールアップ」 works ):

  • 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 + vim7.3で問題を観察していないことを報告したことです。この問題に関するPosterの最初の観察は、tmux 1.8 + vim7.4でも行われました。


うまくいけば、少なくとも、この回答は、PuTTYに専念している(または固執している)人に、この問題を回避するためのオプションを提供します。それを超えて、うまくいけば、誰かが上記の追加の観察を理解し、トピックを適切な解決に導くのを助けることができます。

5
daBeamer

ここで終わる人のために:これは0.64プレリリースで修正されており、公式のPuTTYWebサイトからダウンロードできます。

2
FrederikVds

私はubuntu16.04のインストールに問題はありません。 tmuxはデフォルトのapt-getインストールバージョンです。 Vimはバージョン8です。PuTTYはバージョン0.67です。

Tmuxセッションでホストされている場合、スクロールとクリックの両方がvim内で機能します。

〜/ .tmux.conf

set-option -g mouse on

マウスコントロールのtmuxオプションが以前のバージョンから変更されていることに注意してください。

〜/ .vimrc

set mouse=a

この回答 は、vimプラグインが問題の原因である可能性があることを示唆していることに注意してください。

0
Pete

これが、スクロールを正しく機能させることができた唯一の方法です。

プット:

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

ファイル内:~/.tmux.conf

0
phocks