kmiya-culti / RLogin

RLoginは、Windows上で動作するターミナルソフトです
http://nanno.bf1.jp/softlib/man/rlogin/
MIT License
478 stars 17 forks source link

vim起動時に特定のシーケンスが送信される #36

Closed kosu9i closed 5 years ago

kosu9i commented 5 years ago

いつも利用させていただいております。 原因が分からないので、もしすぐにピンとくるようなことがあれば教えていただきたく...

  1. sshにて Ubuntu 18.04.2 LTS のホストに接続
  2. vimでファイルを開く

とすると、vimの起動時に、不定期(10回に1回程度)で ^[P1$r1 というシーケンスが入力されてしまいます。

ということから、何らか条件の組み合わせで発生しているような気がしていますが 原因が特定できておりません...

もし心当たりなどございましたら、ご教示いただけると大変助かります。

ttdoda commented 5 years ago

^[P1$r1 というシーケンスが入力されてしまいます。

おそらくカーソル形状の問い合わせに対する応答だと思います。 vim で timeoutlen または ttimeoutlen の値を極端に短く設定していませんか?

kosu9i commented 5 years ago

早速ご回答ありがとうございます。

それらはデフォルトのままですが

timeoutlen=1000
ttimeoutlen=-1

で設定されているようです。

試しに

timeoutlen=1000
ttimeoutlen=1000

に変更してみましたが、状況は変わりませんでした。

無知ですみませんが、「カーソル形状の問い合わせに対する応答」とは RLoginで行われているものでしょうか? この辺り知見がないのですが、なにかキーワードがあれば自分でも探してみます。

ttdoda commented 5 years ago

それらはデフォルトのままですが

ああ、やはりそうでしたか。timeoutlen, ttimeoutlen が原因の場合はまず termcap query という機能の方で問題が出そうな事にコメントしてから気が付きました。

無知ですみませんが、「カーソル形状の問い合わせに対する応答」とは RLoginで行われているものでしょうか?

Vim が端末(RLogin)に対してカーソルの形状を問い合わせて、それに対して端末がカーソル形状の情報を返すという事を行います。 その時にカーソルが四角(ブロックカーソル)で点滅状態だと、応答として ^[P1$r1 q^[\ というシーケンスが送られます。

  • 他のsshクライアント(PuttyやMacのterminal)では発生しない

これらの端末はカーソル形状の問い合わせに対応していないので、問い合わせを無視して応答しない為問題が発生しないのでしょう。 (正確には Vim が対応していない事を検知してカーソル形状の問い合わせを行わなくなる) Tera Term はカーソル形状の問い合わせに対応しているので、Tera Term でも問題が発生するか確認できますか?

あと、現象を抑え込むだけならば .vimrc に set t_RV= を追加するとカーソル形状の問い合わせを行わなくなります。 ただしこの設定を追加すると他の様々な自動判別機能も無効になるので、他の問題が出るかもしれません。

kosu9i commented 5 years ago

@ttdoda ご教示いただきありがとうございます!

その時にカーソルが四角(ブロックカーソル)で点滅状態だと、応答として ^[P1$r1 q^[\ というシーケンスが送られます。

ここの情報がすごくありがたかったです!よく理解できました。

Tera Term はカーソル形状の問い合わせに対応しているので、Tera Term でも問題が発生するか確認できますか?

RLoginでも不定期に再現するため、確かなことは言えないですが TeraTermでは20回くらいvimを起動しても発生しませんでした。 ( Version 4.103 (SVN# 7769) ポータブル版を使用して試しました)

あと、現象を抑え込むだけならば .vimrc に set t_RV= を追加するとカーソル形状の問い合わせを行わなくなります。 ただしこの設定を追加すると他の様々な自動判別機能も無効になるので、他の問題が出るかもしれません。

おかげさまで、現象を抑えることができました...! また、いただいた情報をもとに https://vim-jp.org/vimdoc-ja/term.html を見て、 t_RC 端末カーソルの点滅を要求 を見つけたので、こちらを無効にしたところ それらしい副作用( t_RV のときは文字色が変わってしまっていました)もないように見えます。 しばらくこの状態で過ごしてみたいと思います。

ご丁寧にレクチャいただき、本当に助かりました。ありがとうございました!