
私は 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 の問題の潜在的な修正へのリンクと、問題全体の分析があります。
問題の説明
構成
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
の間の否定的な相互作用を避けることが、スクロールを無効にする主な理由の 1 つです。tmux
vim
tmux
行動
以下は、ターミナル エミュレーターとして PuTTY を使用している場合にのみ発生し、gnome-terminal または他のテスト済みの Linux ターミナル エミュレーターでは再現できないことに注意してください。
マウスを使って「上にスクロール」しようとすると、vim
内部セッションの終了時にtmux
、アクションは単に失敗します。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 システムではこの問題が顕著に現れますが、Ubuntu 12.04 システムではこの問題は発生しません。
一見すると、この問題はシステム構成の差分 (つまり、ncurses-term の欠落など) を示しているように見えますが、このタイプのソリューションを使用した修正は確認されていません。さらに、この同じ問題に関する複数のレポート (このスレッドを含む) は、問題の存在を裏付ける傾向があります。
この問題と関連ソフトウェアのバージョンは相互に依存しているため、問題は単一のアプリケーションに限定されていないようです。/ の新しいバージョンが、リグレッションの原因となった何かを「修正」した可能性があります。または、 tmux
/vim
の新しいバージョンが PuTTY の既存の問題を単に露呈させただけかもしれません。いずれにしても、完全に解決するには追加の調査が必要になります。調査に役立つと思われる関連バージョン情報を以下に記載していますので、ご参照くださいtmux
。vim
バージョン情報
ウブントゥ 12.04バージョン情報(vim
内部で「上へスクロール」)tmux
作品):
tmux
: 1.6-1vim
: 7.3.429-2
ウブントゥ 13.10vim
バージョン情報(内部の「上へスクロール」tmux
は壊れた):
tmux
: 1.8-4vim
: 7.4.000-1
また、注目すべき点として、gmane の投稿者はtmux
1.7 + 7.3 ではこの問題は観察されなかったと報告しています。投稿者がこの問題を最初に観察したのも1.8 + 7.4vim
でした。tmux
vim
願わくば、少なくともこの回答が、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