私はurxvt内のtmux内でvimを使用していますが、右にクリックしすぎた場合を除いて、マウスはテキストのクリックと選択に最適です。
左からの列数の距離に関係しているようです。列〜200を超えると(正確な数がわからない)、クリックしても何も起こりません。
これはvimウィンドウとは関係がないことに注意してください。2つのvimウィンドウがそれぞれ最大150列を占めるため、2番目のウィンドウの最大50列以降のクリックは機能しません。それはvimセッション全体に関連しています。
また、大きなtmuxペイン(> 200列)で遠くをクリックすると完全に機能することにも注意してください。
私の.tmux.conf
には、次の行があります。
set -g default-terminal "screen-256color"
そして私の.vimrc
にはこれがあります:
if &term =~ "^screen"
autocmd VimEnter * silent !echo -ne "\033Ptmux;\033\033]12;7\007\033\\"
let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]12;5\x7\<Esc>\\"
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]12;7\x7\<Esc>\\"
autocmd VimLeave * silent !echo -ne "\033Ptmux;\033\033]12;14\007\033\\"
end
Vimの編集モードに応じてカーソルの色が変わり、動作します。つまり、tmuxは実際に$TERM
を「screen-256color」に設定しますが、これが私のマウスの問題と関係があるかどうかはわかりません。
Ubuntu 12.04、vim 7.3、tmux 1.6、rxvt-unicode9.14を実行しています。
誰かがこの問題を引き起こしているものについての考えを持っていますか?ありがとう。
更新: xtermを使用しましたが、機能します。ユニコードのサポートにはurxvtが必要だと思いましたが、信じられないかもしれませんが、xtermにはユニコードのサポートもあります。
だから、 Screwtape のおかげで、私は 答え を持っています。以下に再現:
元のxterm
マウスプロトコルは、最大223列と行のみをサポートします。プロトコルの新しいバージョンはUTF-8エンコーディングを使用していましたが、これはひどい考えでした。最近の端末は、はるかに正気なSGRエスケープシーケンスに基づいて完全に異なるプロトコルをサポートしています。
tmux
は、元のプロトコルとSGRプロトコルの両方の方法(内部で実行されている端末と内部で実行されているアプリケーション)を自動的にサポートしますが、「mouse-utf8」が有効になっている場合にのみ、外部端末からUTF-8モードを要求します。構成ファイル内。
vttest
ツールを使用して、tmux
の内外でさまざまなマウスプロトコルを試して、何が起こっているのかをよりよく理解することができます。
Vimの_'ttymouse'
_オプションのドキュメントによると、_$TERM
_がxterm
、mlterm
、またはscreen
のバリアントである場合(およびtmux
はそれ自体をscreen
として報告する場合)、端末にoriginal-xterm-protocolのサポートを要求します。 OK)。端末が_"RV"
_ termcap機能をサポートしてxterm
バージョン番号を決定する場合、Vimはそれを使用して自動的に_'xterm2'
_または_'sgr'
_マウスプロトコルにアップグレードします...ただし、通常はxterm
のみが_"RV"
_がサポートされているため、tmux
は自動アップグレードプロセスから除外されます。
私の_~/.vimrc
_には、Vimの自動検出に依存する代わりに、適切なマウスサポートを有効にする次のコードがあります。
_" Screen/tmux can also handle xterm mousiness, but Vim doesn't
" detect it by default.
if &term == "screen"
set ttymouse=xterm2
endif
if v:version >= 704 && &term =~ "^screen"
" Odds are good that this is a modern tmux, so let's pick the
" best mouse-handling mode.
set ttymouse=sgr
endif
_
(注目すべきは、ここでは_set ttymouse=sgr
_が実際の修正です。Timが行ったように _.vimrc
_ に追加することをお勧めします。)
これは、端末のマウスレポートプロトコルの制限によるものです: "元のX10マウスプロトコルは、C xおよびC y座標を223(= 255-32) "参照 このリンク