回答:
Filippo Valsordaには、iTerm 2、tmux、およびmoshを組み込んだOS X用のソリューションがあります。
彼のソリューションは、単一のウィンドウ/タブを使用してリモートシェルに接続します。シェルは切断(たとえば、接続障害、IPの変更、ラップトップの再起動)を乗り切り、タッチパッド、コピー、貼り付け、および色によるスクロールバックをサポートします。
警告は、ソースからmoshをビルドする必要があり、スクロールはネイティブよりも流動性が低く、クリックドラッグはリレーされるため、Optionを押して選択する必要があるということです。
ターミナルプロファイル設定で、xtermマウスレポートを有効にし、レポートターミナルタイプをxterm-256colorに設定します。
~/.tmux.conf
サーバーで次のように設定します。これらの設定では、接続しようとしてセッションがない場合、新しいセッションが作成されます。この設定により、マウス操作(およびタッチパッドのスクロール)も有効になります。
new-session
set-window-option -g mode-mouse on
set -g history-limit 30000
注:より最近のtmux(つまり> 2.1)で報告されているようtmux -V
に、さまざまなマウスオプション(マウスサイズ変更ペイン、マウスモードなど)が1つのオプションに書き換えられているmouse
ため、2行目を変更する必要があります 代わりに上記のset-window-option -g
マウスon
に。
あなたは、キーボードのスクロールモード(例えばにあるとき、このマウスのスクロールも動作しますCtrl- bそれから[、資料に記載)tmuxの中でスクロールする方法。
moshの安定ビルドは古く、マウスレポート(およびタッチパッドスクロール)をサポートしていません。最新バージョンをインストールするには、次の手順を実行します。
OS X(クライアント)
brew install --HEAD mobile-shell
Linux / UNIX(サーバー)
git clone https://github.com/keithw/mosh.git
cd mosh/
sudo apt-get build-dep mosh
./autogen.sh && ./configure && make
sudo make install
接続するには、次のように入力します。
mosh HOST -- tmux a
ターミナルエミュレーションはmoshの設計のかなり奥深くに焼き付けられています。Moshは、クライアントとサーバーの両方に、現在画面がどのように見えるかのローカルアイデアを維持させることで機能します。そのためには、サーバーが端末エミュレーションを行う必要があります。これは、クライアントがしばらく離れてデータを失った後、画面の内容を更新できる方法です。
moshのIPローミング機能を備えているが、端末エミュレーションのないアプリケーションは、まったく別の(しかしより単純な)アプリケーションになると思います。このようなアプリケーションでは、データの損失(クライアントがしばらくオフネットになっている場合を含む)により、画面の内容が失われたり破損したりします。これは、ユーザーがあまり問題にならないアプリケーション(シェルなど)または再描画機能を備えたアプリケーション(vi
Control-Lなど)を使用している場合、許容される制限です。
ただし、Moshの実装者は、ローカルターミナルでそれができないという事実を補うために、アプリケーションでのスクロールバックサポートを計画しています。私は、これはのように少し仕事をしなければならないだろうと思いscreen
、キーストロークによって制御スクロールバーとマウスません。■スクロールバッファはいえ」を。
Eternal Terminal(https://mistertea.github.io/EternalTerminal/)は、ネイティブスクロールバックをサポートし、IPローミングを許可するMoshの代替です。ETはタイピングの予測を行いませんので、高遅延接続がある場合(ドローンまたは携帯電話からsshしている場合)には適していませんが、個人的にETは私が望むすべてを行い、スクロールバックをサポートします。