仕事関連で大量に開いたvimのバッファをそのままにしてまっさらなシェルを立ち上げたいという欲求がありましたがvimのプロセスをセッションととらえるくらいにまでは使い込んでないので今更感あふれますがscrennのデタッチ/アタッチを使ってみました
まずは現在開いているscreenのセッションをデタッチします
デタッチすることによっていま行っている作業をセッションという形でそのまま保存できます
キーバインドは^kdに割り当てられいます
^kの部分はescapeの設定によるので各自自分の設定に合わせてください
このときMacのTerminal.appなんかの設定でシェルを起動せずにscreenを直接起動するような設定になっていると丸ごとデタッチしてしまって次の起動時にはそれがアタッチするということになってしまい、1つのセッションしか使えなくなるので"シェル上で起動する"をチェックしておく必要があります
通常のシェルの画面に戻ったと思いますのでデタッチされているのを確認します
$ screen -ls There are screens on: 4722.5308.ttys000.elizabeth (Detached) 1 Sockets in /tmp/uscreens/S-tomohiro.
先頭の4722といういうのがセッション番号になります
アタッチするときはこの番号かそれに続くセッションネームを指定します
ちなみに、セッションネームの指定方法ですが、起動時に-Sオプションで渡してやるか、^k:と打ってからsessionname hogehoge
と入力すると"hogehoge"というセッションネームに変更できます
つぎにデタッチしているセッションをアタッチします
この作業によって作業内容を復帰できます
以下のようにします
$ screen -r [screenname or number]
例えばhogehogeというセッションを復帰したいときはscreen -r hogehogeという要領です
もしもデタッチしているセッションが1つであれば引数なしで-rオプションを指定するとそれが復帰します
毎回screen -lsとかscreen -rとかするのは面倒なのでaliasを切っておくと便利です
また、id:hitode909さんの指定された名前のscreenを立ち上げる関数を改良 - hitode909の日記を使うとかなり便利になるのでおすすめです
僕はzshの関数として.zshrcに書いて使っています
なんで今まで使ってなかったのか不思議なくらい便利です
使ってないみなさんも是非一度お試しあれ