ローカルのスクロールバックをあきらめずに mosh
を使用する方法はありますか?
基本的に、一部の状況では、IPローミングは確かに役立ち、必要ですが、追加の端末エミュレーションとキー予測は、ローカルのスクロールバックバッファー行とセッション履歴のみを取り除くようです。
Filippo Valsordaには iTerm 2、tmux、moshを組み込んだOS X向けのソリューション があります。
彼のソリューションでは、単一のウィンドウ/タブを使用してリモートシェルに接続しています。シェルは切断後も存続し(接続障害、IPの変更、ラップトップの再起動など)、タッチパッドによるスクロールバック、コピー、貼り付け、色をサポートします。
注意点は、ソースからモッシュを構築する必要があり、スクロールはネイティブよりも流動的ではなく、クリックしてドラッグすることが中継されるため、選択するにはオプションを押し続ける必要があります。
端末プロファイル設定で、xtermマウスレポートを有効にします。レポート端末タイプをxterm-256colorに設定します。
セットする ~/.tmux.conf
サーバー上で次のようにします。これらの設定で、アタッチしようとしたときにセッションがない場合は、新しいセッションが作成されます。この設定により、マウスの操作も可能になります(タッチパッドのスクロールも可能になります)。
new-session
set-window-option -g mode-mouse on
set -g history-limit 30000
注:より最近のtmux(つまり> 2.1)では、tmux -V
、さまざまなマウスオプション(mouse-resize-pane、mouse-modeなど)が単一のオプションmouse
に書き直されたため、上の2行目をに変更する必要がありますset-window-option -g
mouseon
代わりに。
このマウススクロールは、キーボードスクロールモード(たとえば、 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ローミング機能を備えているが、端末エミュレーションを備えていないアプリケーションは、まったく異なる(しかしより単純な)アプリケーションになると思います。このようなアプリケーションの場合、データが失われると(クライアントがしばらくネットに接続されていない場合を含む)、画面の内容が失われたり破損したりします。これが問題とならないアプリケーション(シェルなど)または再描画機能を備えたアプリケーション(Control-Lを使用したvi
)をユーザーが使用している場合、これは許容できる制限です。
Moshの実装者 アプリケーションでのスクロールバックのサポートを計画しています ただし、ローカルターミナルではもう実行できないという事実を補います。これはscreen
のスクロールバックバッファーのように少しは機能する必要があると思います。スクロールバーやマウスではなく、キーストロークによって制御されます。
Eternal Terminal( https://mistertea.github.io/EternalTerminal/ )は、ネイティブスクロールバックをサポートし、IPローミングを許可するMoshの代替です。 ETはタイピングの予測を行わないため、待ち時間が長い接続(ドローンまたは携帯電話からsshを使用している場合)には適さない可能性がありますが、ETは個人的に必要なすべてを行い、スクロールバックをサポートします。
「ターミナル」->「設定」->「プロファイル」->「キーボード」で「代替画面のスクロール」のチェックを外すと、修正されました。