再起動後に「GNUスクリーン」レイアウトを維持する方法


13

私が使用していますscreen左のVIMと3に分割し、2つの他の画面が右に水平に分割します。画面からデタッチするときに、でレイアウトを保存できることを知っています:layout save my_layout_name

私はすでにファイルに持っlayout autosave onてい.screenrcますが、それは私の問題には役立ちません。

異なるターミナルセッション間、およびPCの再起動後に画面のレイアウトを維持するにはどうすればよいですか?または多分回避策として、それを分割する画面(パラメーター)を実行し、すべてのウィンドウにbashを設定してレイアウトを保存する方法はありますか?

回答:


13

新しい画面のデフォルトのレイアウト

リージョンを管理し、画面内でコード実行します

  • するには、保存ファイルにあなたの現在のレイアウトを.screen_layout

    rm -f $ HOME / .screen_layout
    screen -Xレイアウトダンプ.screen_layout
    
  • レイアウトを保存して自動読み込みするには:

    エコーソース.screen_layout >> $ HOME / .screenrc
    エコーレイアウト保存定義>> $ HOME / .screenrc
    

使い方

  1. あなたはタイプするscreen
  2. 画面の読み取り$HOME/.screenrc
  3. source .screen_layout- 作成されたリージョンからコマンド読み取り、実行します。 $HOME/.screen_layout
  4. layout save def- 現在のリージョンをレイアウトとして保存し、デタッチしたときにそれを保持します。

layout dump .screen_layout

  • ダンプ(APPEND)に現在のレイアウトファイル$HOMEのディレクトリ

screen -X command

  • 現在の画面セッションで実行commandします(内部で実行された場合)。 その時と同じように
    ctrla: command

あなたも

  • 起動時に著作権表示を無効にする:

    echo startup_message off >> $ HOME / .screenrc
  • スクロールバッファーを増やします(def。100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • 独自に書く.screen_layout(50%/ 50%垂直、2シェル):

    分割-v
    画面-t s1
    
    フォーカス
    screen -t s2
    
    フォーカス
    

あなたは正しいです。このメソッドは、コマンドをファイルにダンプし、それらをで繰り返すことにより、画面レイアウトを維持します.screenrc.screen_layoutファイルには、各時間を実行するために、すべてのコマンドで編集することができますscreen含め、実行されlayout save default、最後に。他の読者に、bashを実行するためにファイルのscreenfocusに追加することをお勧めし.screen_layoutます。
randunel

7

Ctrl- aその後:layout save default 提供された画面は新しいバージョンです(レイアウト機能付き)。

UPDATE:ここにある.screenrcのようになりますファイルの変更を永続的には、他の素敵な機能を追加するとともに、。


なぜどんな考えlayout autosave onでは.screenrc動作しませんでしたか?それは私にとって好ましいでしょう。
スピンロック2015

あなたは正しい、それは機能しません。しかし、私はここから.screenrcをテストしました:gist.github.com/joaopizani/2718397そしてそれはうまくいきます。
Mir Dunaev

2

layout autosave on」は、.screenrcで明示的に指定されたレイアウトでのみ機能します。

つまり、一部のレイアウトをABCとして指定し、Screenセッション内でそのレイアウトに切り替えて切り離した場合、この最後のレイアウトはセッションの再開後に復元されます。

構成ファイルでレイアウトを指定しなかった場合は、切り離す前に内部コマンド「layout save your_layout_name」を実行する必要があります。

これは、選択可能なレイアウトが事前定義された.screenrcです。

 0 — one (the only region)
 1 — two-v (the screen is splitted vertically into two regions, default layout)
 2 — two-h (the screen is splitted horizontally into two regions)
 3 — three (three regions — two in the upper part of the screen and one underneath)
 4 — four (four regions)

定義済みのレイアウト

画面内から選択すると、これらのレイアウトは切り離し時に次のセッションが再開されるまで保持されます(「layout autosave on」コマンドによる)。

独自のレイアウトを作成した場合は、「layout dump filename」コマンドで保存する必要があります。次に、「filename」ファイルのコードを使用して、この.screenrcの#layoutsセクションにレイアウトを追加し、そこから選択できます。

デフォルトでは、「two-v」レイアウトは、bashのある唯一のウィンドウでロードされます。


これは素晴らしいことですが、レイアウトを切り替える方法を忘れてしまい、キーバインディングが削除されたというコメントを見ました。ただfyi-このキーバインドは私(Ubuntu 16.04)でレイアウトを切り替えるために機能します: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi

0

この情報源によると、方法が原因でそれは不可能screenです。ただし、そこにはハックがあります。基本的には、別の画面内に画面をネストすることになりますが、これはあまり便利ではありません。(ここに回答があります

ローカルマシンの端末分割にscreenを使用している場合(これは前述のpc再起動から推測されます)、というターミナルエミュレーターをチェックアウトすることをお勧めしますterminator。水平および垂直の端子分割(ネストも)をサポートし、お気に入りのレイアウトを保存して後で使用できます。次に、適切なオプションを指定してターミネーターを実行しますterminator -l <name of saved layout>


画面を別の画面内にネストすることは承知していますが、再起動するとすべての画面が終了します。画面内の画面はlayoutが追加されたときに解決されたため、回答は質問以外にも古くなっています。私はterminator提案を感謝します。
randunel 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.