まとめ

まとめ

私は PuTTY、tmux、vim を組み合わせて使用​​しています。PuTTY で SSH 接続を開いてから vim を開くと、マウス スクロールは期待どおりに動作します。しかし、tmux を開いてから tmux 内で vim を開くと、スクロールは部分的にしか動作しません。つまり、通常どおり下方向にスクロールできますが、上方向にスクロールできません。上方向にスクロールすると、バッファが「上下に」ガクガクと動き、同じ場所に留まります。「set -g mode-mouse on」では違いがないようです (その後、「tmux source-file ~/.tmux.conf」で設定を再読み込みします)。どちらの方法でも同じように動作します。

編集: また、ターミナルの tmux ではスクロールが期待どおりに機能しますが、vim では機能しないことに気付きました。vim で使用できるマウス/ターミナル関連のオプションは、「set mouse=a」と「set t_Co=256」のみです。

何か案は?

答え1

まとめ

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


問題の説明

構成

vimmouse=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

使用事例

典型的な使用例は、vim 内部tmuxの間の否定的な相互作用を避けることが、スクロールを無効にする主な理由の 1 つです。tmuxvimtmux

行動

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

マウスを使って「上にスクロール」しようとすると、vim 内部セッションの終了時にtmux、アクションは単に失敗します。OP が説明しているように、スクロールの試行ごとにカウンターアクションが行われているかのように、バッファが上下に揺れているのが見えることがよくあります (これについては後述します)。

これは基本的に OP の説明と同じですが、私の説明や OP の質問で不明な点がある場合に備えて要約しました。


潜在的な解決策 - PuTTY

PuTTY が ScrollDown/ScrollUp イベントごとに不要な ScrollDown イベントを送信するという問題があるようです。つまり、スクロールアップの試行はすべてキャンセルされ、何も起こりません。逆に、スクロールダウンのときは、スクロールイベントが 2 倍になります。この動作は、vimスクロール動作を見れば簡単に確認できます。まず外へ(スクロールが正常に機能する場所tmux2番目内側(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 システムではこの問題が顕著に現れますが、Ubuntu 12.04 システムではこの問題は発生しません。

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

この問題と関連ソフトウェアのバージョンは相互に依存しているため、問題は単一のアプリケーションに限定されていないようです。/ の新しいバージョンが、リグレッションの原因となった何かを「修正」した可能性があります。または、 tmux/vimの新しいバージョンが PuTTY の既存の問題を単に露呈させただけかもしれません。いずれにしても、完全に解決するには追加の調査が必要になります。調査に役立つと思われる関連バージョン情報を以下に記載していますので、ご参照くださいtmuxvim


バージョン情報

ウブントゥ 12.04バージョン情報(vim内部で「上へスクロール」)tmux 作品):

  • tmux: 1.6-1
  • vim: 7.3.429-2

ウブントゥ 13.10vimバージョン情報(内部の「上へスクロール」tmux壊れた):

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

また、注目すべき点として、gmane の投稿者はtmux1.7 + 7.3 ではこの問題は観察されなかったと報告しています。投稿者がこの問題を最初に観察したのも1.8 + 7.4vimでした。tmuxvim


願わくば、少なくともこの回答が、PuTTY に熱心に取り組んでいる (または PuTTY にこだわっている) すべての人に、この問題を回避するオプションを提供できれば幸いです。さらに、上記の追加の観察事項を理解して、この問題を適切に解決する手助けをしてくれる人がいれば幸いです。

答え2

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

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

tmux.conf は、

set-option -g mouse on

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

~/.vimrc

set mouse=a

を注意この答えvim プラグインが問題の原因である可能性があることを示唆しています。

答え3

ここにたどり着いた皆さんへ: これは 0.64 プレリリースで修正されており、公式 PuTTY Web サイトからダウンロードできます。

答え4

これは、スクロールを適切に動作させる唯一の方法です。

置く:

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

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

関連情報