任务单 #14965

vimでvsplitすると右ペインでマウスクリックがおかしくなる?
开放日期: 2009-02-05 20:33 最后更新: 2009-03-24 02:26

报告人:
属主:
类型:
状态:
关闭
组件:
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Works For Me
文件:
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

お世話になります。
もしかしたら、vimのせいかもしれないのですが
クリックしたときの座標関係のような気もするので
こちらで投稿させてください。
たぶん、レアケースです。。。(用途的に)

現象:
set mouse=a 等で マウスを有効にしたvim上で編集において
:vsplit により画面を縦分割したときに、画面右ペインをクリックするとvimおかしな挙動をします。
また、この時..とか%%とか変な文字列が送信されるようです。
# この辺の文字列をコマンドとして処理してるぽいです

ちなみに、
:split によって水平分割した場合には、
クリックした位置にカーソルが移動してくれます。

縦分割でもクリックしたときのカラム位置が左ペインにあるときと同じ場合に限りカーソルは右ペインに移動してくれます。

任务单历史 (3/6 Histories)

2009-02-05 22:24 Updated by: doda
  • 处理结果 Update from to Works For Me
  • 属主 Update from (无) to doda
评论
手元の環境では、vsplitしても問題なく動いています。
CygWin接続で、vimは以下のものです。
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 9 2008 15:23:22)
-以下略-

shell.sourceforge.jpにインストールされているvimでも問題なく動きます。
% vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Aug 29 2007 10:38:27)
適用済パッチ: 1-122, 234-235, 39
-以下略-
2009-02-05 23:24 Updated by: raynstard
评论
お騒がせしています。
いろいろ試してみたのですがvimのバグが濃厚になってきました。
また、 vsplit が原因というよりも、termencodingを設定した状態で横幅を広くして右端の方のカラムをクリックしてやると発生するみたいです。
僕の環境では、220カラムが境界位置でした。

以下、いろいろ試してみた結果の再現手順です。

% resize -s 40 150
→ ターミナルのサイズ変更 150 x 40
ウィンドウのドラッグとかでもいいです
% touch a
% perl -e 'print "A" x 400 . "\n"' | vim -R -T xterm -u a -c "set mouse=a" -
: set tenc=euc-jp
→ 普通にvim を開いてから画面いっぱいに入力してもいい(右端をクリックしたときに文字があるように)
→ -u a は設定ファイル(.vimrc)を読み込まないようにするためのダミーです

以上の手順で
vim を起動した段階では右端の方をクリックしても
クリックは思い通りに機能しますが
termencoding を 設定した段階でおかしくなりました。

cygwin の vim ならば同じバージョンのようです。
---
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 9 2008 15:23:22)
Compiled by corinna@cathi
2009-02-06 20:15 Updated by: raynstard
评论
やっぱり、vimの不具合みたいです。
language に 1バイト文字を指定して
encodingとtermencodingに別々の文字コードを
設定しただけで発生しました。

% resize -s 40 120
% vim -T xterm
: lan C
: set mouse=a
: set enc=utf-8 tenc=euc-jp

文字自体なくても行さえあればクリックした段階で
おかしな文字列は送信されているようでした。

vim の利用で termencoding を設定するのはあまりよくないみたいです。

teraterm は白でした。
失礼しました、申し訳ありません。
この報告は破棄してください。
2009-02-06 21:07 Updated by: doda
评论
| 僕の環境では、220カラムが境界位置でした。

xtermのマウスレポートですが、プロトコルの制約上223桁までしか報告できません。
その為、Tera Termでは224桁目以降は223桁目としてレポートするようにしています。
この制限を回避するにはDEC Locatorモード等の他のマウスレポートのプロトコルを使う必要があるのですが、現在のTera Termではこれらのプロトコルには対応していません。

| vim を起動した段階では右端の方をクリックしても
| クリックは思い通りに機能しますが
| termencoding を 設定した段階でおかしくなりました。

これはvimのバグ(もしくは仕様)だと思われます。
xtermのマウスレポートプロトコルでは、96桁目以降では7ビットでは収まらないので8ビット文字を使うようになります。
vimがこれらのレポートを受け取った時、内部エンコーディングに合わせて文字エンコーディングを変換しようとしておかしな動作になっているように思われます。
とりあえずの対処としては、encodingとtermencodingの設定を同じにすればエンコーディングの変換が行われなくなるので、マウスレポートが正しく処理されるようになります。
ただし、使用するエンコーディングによっては扱えなくなる文字が出てくるかもしれません。
またDEC Locatorモードでは8ビット文字が使われる事がないのでこれを使えば問題が無くなるはずですが、前述したように現在のTera Termでは対応していません。

# やっぱりDEC Locatorモードに対応した方がいいのかなあ
2009-02-07 22:53 Updated by: raynstard
评论
|xtermのマウスレポートプロトコルでは、96桁目以降では7ビットでは収まらないので8ビット文字を使うようになります。
右の方の桁に行くとステータスラインのカーソル座標部分が
化けるのと関係しているのですかね。

vimのソースコードも眺めてみましたがなにがなにやら、全然でした。

|# やっぱりDEC Locatorモードに対応した方がいいのかなあ

個人的には、不要だと思います。
というのも、vimでもtermencodingは設定しないこと方がいいような記述もありますし
利用誤りという側面の方が大きいのかなと^^;;

vim以外でDEC Locatorモードにできないことが原因そうで似たような不都合が
でるようならばともかく、今回みたいな利用誤りに近いレアケースをターゲットにした
追加仕様はもう少し様子見でいいんじゃないかなと思います。
vim以外でマウス使えるというのも思い浮かびませんし。
#Xは使ったことがないのでそっち方面はわかりません。^^;;
2009-03-24 02:26 Updated by: doda
  • 组件 Update from (无) to Tera Term
  • 状态 Update from 开启 to 关闭
  • Ticket Close date is changed to 2009-03-24 02:26
评论

横幅の問題もあるので将来的にはDEC Locatorモードに対応しようと思っていますが、 あまり急ぎではないという事なので一旦クローズします。

Attachment File List

No attachments

编辑

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登录名