screenとxterm:ウィンドウが縦に分割されているときに1つのウィンドウでマウスでテキストを選択する方法

screenとxterm:ウィンドウが縦に分割されているときに1つのウィンドウでマウスでテキストを選択する方法

興味深いことに、これはtmux一部の人々にとっても問題になります。 http://daemonforums.org/showthread.php?t=7311

しかし、私は現在私が頑張っていて、これについてどのようにscreen「行動する」ことができるのか疑問に思います。screen

選択テキストの使用マウス線がウィンドウの幅より長くない場合は問題ありません。私は:widthこのオプションを使用または使用せずに-w実験してみました。 (梱包しないと汚れて見えます(:+wrap))

ああ、そして:width環境について非常にトリッキーです。高すぎると、行widthが長くなります。みんなbash端末は前後に移動します(つまり、プロンプトがある場合user@host $にのみ表示されますr@host $)。これは非常に見苦しいです。

ウィンドウ幅の複数の倍に分割された長い線を選択すると、次のような動作が発生します。

  • セレクタが表示されます(逆方向)。超過左側のウィンドウは右側のウィンドウと重なります。まず、これは問題があるようです。また、セレクタはウィンドウの右枠を囲む必要があります。
  • 選択項目を貼り付けると、最初の部分行で長い行が切り捨てられ、残りの部分が切り捨てられることがあります。時には、追加|(!)しようとしても、複数行のように続けようとします。スクリプト(結果:)bash: syntax error near unexpected token '|'ああ。

マウスで何とか動作させることはできませんか?

答え1

短い答え:いいえ、GNU Screenはそうすることはできません。

長い答え:GNU画面は、許可されている特別な場合を除いて、xtermマウスプロトコルをほとんど無視します。マウスクリック(これ「マウストラック」特徴)。

提案したアイテムを選択するには、もう少し作業が必要です。

  • xtermマウスプロトコルは、端末にアプリケーションにエスケープシーケンスを送信させることで機能します。
  • screenマウスボタンを押したときにエスケープシーケンスを送信し、マウスボタンを離すときに別のエスケープシーケンスを送信する「一般」マウスプロトコル(1000)を使用します。
  • このようにクリックするだけでは、選択/貼り付け時に期待どおりにドラッグする機能はサポートされません。ですから、screenその前では何もしようとしません。
  • xtermマウスプロトコルが有効な場合、マウスボタンを使用しないと選択/貼り付けができませんshift
  • どちらか(開くかどうかにかかわらずmousetrackscreenターミナルを使用して選択ハイライトを表示します。 xterm(および他の端末)は選択マージンを設定できないため、画面全体の幅を強調表示できます。

これに比べてtmuxマウスでより多くの作業を行うことができます。これは実際には異なるタイプのxtermマウスプロトコル間で変換され、端末間の違いを提供します(例:UTF-8モード(1005)およびSGR(1006)の中から選択)。

原則として、tmux できるこの質問で説明されているように、改善された選択/貼り付けを提供するように修正されました。できるxtermマウスモードを1002(セルアクションマウストレース)に設定すると、セルフハイライトを描画する場所を示します。ソースコードに実装されているものが見えないので、リンクtmux 1つのウィンドウでのみコンテンツを選択する方法は?それでも関連性があるようです。

tmuxたとえば、Windowの(キーボード)コピーモードはウィンドウを認識しないようです。

欠点もあります:

  • これは〜になります遅い: (a) 端末でより多くの文字が再送信され、 (b) マウスの使用性能に対する期待が偏っているため、コピーモードよりもはるかに遅い。ローカルコンピュータではなくSSHを介して実行している場合、これは非常に明らかです。
  • たとえば、この選択は役に立ち、tmux通常はX環境の他のウィンドウにはコピーされません。

追加資料:

関連情報