物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
tmuxがすでに起動しているときはそれにデタッチする、起動してないときはnew windowする設定
を知りたい。
screenにはそういうことを自動的にやってくれるらしい
が、tmuxにはないので関数を作らないといけない
↓9年前の記事
tmuxが起動してると/tmp/tmux-*/defaultにファイルがあることを活用してる
この通り書いてみたけど、セッションの有無に関わらず、このファイルがあるので上手く行かなかった
■ 参考 : tmuxで、「セッションがあればアタッチ、なかったら作成」という形で立ち上げる方法。
↓やってることはシンプルで、tmux lsですでにセッションがあるか確認
あるなら、接続
ないなら、新規作成してる
■ 参考 : tmuxでセッションの有無を判別して起動するスクリプト
これに加えて、
新規で画面を開くときは、~/.tmux.conf以外の設定ファイルを読み込んで起動したかった
(共有アカウントで共有の計算機に入ったときにtmuxを使いたかったので)
やり方は以下の通り
source-fileのあとに書けばOK
function run_tmux(){
tmux ls > /dev/null
if [ $? -eq 1 -a -z "$TMUX" ]; then
tmux -2 new-session \; source-file /somewhere/.tmux.conf
elif [ -z "$TMUX" ] ; then
tmux -2 a;
else
echo "sessions should be nested with care."
fi
}
tmux ls > /dev/null
if [ $? -eq 1 -a -z "$TMUX" ]; then
tmux -2 new-session \; source-file /somewhere/.tmux.conf
elif [ -z "$TMUX" ] ; then
tmux -2 a;
else
echo "sessions should be nested with care."
fi
}
PR
全て終わってから気づいたこと
たぶんMacを再起動したら、デフォルトシェルがzshに変わります
いーや、今すぐシェルを変えたいんだ
という方は、以下の設定を ~/.tmux.conf に追記する
set-option -g default-shell "${SHELL}"
set -g default-command "${SHELL}"
set -g default-command "${SHELL}"
設定を反映させるために、tmuxを再起動する
killall tmux; tmux
なんか以前はできていた気がするけど、ある時からそれができなくなって不便だと気づいた
調べて見たら、v1.9から仕様が変更になったらしい
tmuxの設定ファイルに次のように書いておけばOK
# tmuxで新しいペインを開いた時に同じディレクトリで開くようにする
bind c new-window -c '#{pane_current_path}'
# ペイン分割時も同一ディレクトリで開くようにする
# 画面分割 |と-は感覚的に分かりやすいので追加してる。デフォルトは"と%
bind | split-window -c '#{pane_current_path}'
bind - split-window -h -c '#{pane_current_path}'
bind '"' split-window -c '#{pane_current_path}'
bind % split-window -h -c '#{pane_current_path}'
bind c new-window -c '#{pane_current_path}'
# ペイン分割時も同一ディレクトリで開くようにする
# 画面分割 |と-は感覚的に分かりやすいので追加してる。デフォルトは"と%
bind | split-window -c '#{pane_current_path}'
bind - split-window -h -c '#{pane_current_path}'
bind '"' split-window -c '#{pane_current_path}'
bind % split-window -h -c '#{pane_current_path}'
■ 参考 : tmuxで新しいペインを開いた時に同じディレクトリで開くようにする
セッションに接続する前に
tmux rename -t old_name new_name
みたいな感じまたはセッションに接続した状態で
Prefix + $
これで(rename-session) old_name
みたいな風に表示されるのでバックスペースで消して、new_nameと入力すればOK
#セッション名を付けてセッションを立ち上げる
# この場合は hoge
tmux new -s hoge
# この場合は hoge
tmux new -s hoge
Prefix + dでセッションをデタッチ(一時的終了みたいなもの)
その後で、もう一度セッションに接続するときは
# 今あるセッションを確認する
tmux ls
# hoge というセッションに接続
tmux a -t hoge
tmux ls
# hoge というセッションに接続
tmux a -t hoge
絶対に覚えられないからalias作ろう・・・・
tmnew と tmcon でどうだろう?
tcshの場合は、
alias tmnew 'tmux new -s \!*'
alias tmcon 'tmux a -t \!*'
みたいな感じでalias tmcon 'tmux a -t \!*'
一番困るのはprefixをきちんと捉えてくれない問題
bind-key a send-prefix
とtmuxの設定ファイルに追記しておく■ 参考 : tmux nested tmux (tmux の中で tmux) を使う設定(備忘録)
ただの備忘録です
Prefix + o : pane間移動
Prefix - o : paneの並び替え(全体)
# これはうざいので .tmux.confに追記する事で無効にした
Prefix + c : 新しいwindowの作成
Prefix + 数字 : 数字のwindowに移動する
Prefix + w : 今、開いているwindowが一覧される(カーソルを合わせてEnterでwindowを移動できる)
Prefix + & : 今、開いているwindowを強制終了させる (y/nと聞かれる)
Prefix + n : 次のwindowへ移動(window index = 1, 2, 3 と正順に)
Prefix + p : 前のwindowへ移動(window index = 3, 2, 1 と逆順に)
Prefix + q : paneに分かりやすく数字が表示される
Prefix + [ : copy-modeに入る
# emacs-likeな方法
control + @ : copyの始点
control + w : copyの終点
# tmuxでフォルトの方法
space : copyの始点
return : copyの終点
Prefix + ] : copyしたものを貼付ける(デフォルトではcontrol+yでは貼付けられないみたい)
(2018/06/21 追記)
Prefix + meta + →
Prefix + meta + ↑
Prefix + meta + ←
Prefix + meta + ↓ : アクティブなペインの大きさを変更できる
■ 元記事 : ペインのサイズ変更
(2019/01/29 追記)
Prefix + z : 今いるペインを最大化できる。もう一度 Prefix + zで元の大きさに戻せる
Prefix + w : ウィンドウの一覧が表示できる。2個より多くのウィンドウを同時に扱っているときに便利そう
tmuxのprefixはデフォルトだとcontrol+bです
これは個人的には非常に押しにくい・・・
なので変更するのですが、果たして何に変更すべきか?
ググったところ .tmux.conf の設定だと多くの人がcontrol+aにしているらしい
これも「文末へ移動」のショートカットキーと被っていてあまり良い気がしない・・・
この件に関して、面白い記事がありました
■ 参考 : screen/tmuxのコマンドプレフィックスキーは何がベストか?
■ 元記事 : What's the least conflicting prefix/escape sequence for screen or tmux?
これは自分のprefixキーをcontrol+tにした後に見つけたのですが、色々と意見が分かれているようですね・・・
まぁ自分が使いやすければなんでもいいんだと思いますがね〜
(2017/3/31 追記)
使うことはないと思うけどメモ
ツイート
Prefix + o : pane間移動
Prefix - o : paneの並び替え(全体)
# これはうざいので .tmux.confに追記する事で無効にした
Prefix + c : 新しいwindowの作成
Prefix + 数字 : 数字のwindowに移動する
Prefix + w : 今、開いているwindowが一覧される(カーソルを合わせてEnterでwindowを移動できる)
Prefix + & : 今、開いているwindowを強制終了させる (y/nと聞かれる)
Prefix + n : 次のwindowへ移動(window index = 1, 2, 3 と正順に)
Prefix + p : 前のwindowへ移動(window index = 3, 2, 1 と逆順に)
Prefix + q : paneに分かりやすく数字が表示される
Prefix + [ : copy-modeに入る
# emacs-likeな方法
control + @ : copyの始点
control + w : copyの終点
# tmuxでフォルトの方法
space : copyの始点
return : copyの終点
Prefix + ] : copyしたものを貼付ける(デフォルトではcontrol+yでは貼付けられないみたい)
(2018/06/21 追記)
Prefix + meta + →
Prefix + meta + ↑
Prefix + meta + ←
Prefix + meta + ↓ : アクティブなペインの大きさを変更できる
■ 元記事 : ペインのサイズ変更
(2019/01/29 追記)
Prefix + z : 今いるペインを最大化できる。もう一度 Prefix + zで元の大きさに戻せる
Prefix + w : ウィンドウの一覧が表示できる。2個より多くのウィンドウを同時に扱っているときに便利そう
tmuxのprefixはデフォルトだとcontrol+bです
これは個人的には非常に押しにくい・・・
なので変更するのですが、果たして何に変更すべきか?
ググったところ .tmux.conf の設定だと多くの人がcontrol+aにしているらしい
これも「文末へ移動」のショートカットキーと被っていてあまり良い気がしない・・・
この件に関して、面白い記事がありました
■ 参考 : screen/tmuxのコマンドプレフィックスキーは何がベストか?
■ 元記事 : What's the least conflicting prefix/escape sequence for screen or tmux?
これは自分のprefixキーをcontrol+tにした後に見つけたのですが、色々と意見が分かれているようですね・・・
まぁ自分が使いやすければなんでもいいんだと思いますがね〜
(2017/3/31 追記)
使うことはないと思うけどメモ
パネルの同期
PrefixKey :set-window-option synchronize-panes on
パネルの同期をoff
PrefixKey :set-window-option synchronize-panes off
パネルのサイズ調整(押すごとにいろんな組み合わせで変化)
PrefixKey スペース
PrefixKey :set-window-option synchronize-panes on
パネルの同期をoff
PrefixKey :set-window-option synchronize-panes off
パネルのサイズ調整(押すごとにいろんな組み合わせで変化)
PrefixKey スペース
| HOME |
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST
print "先月子供が産まれました!"
# 最終更新 2022/10/25
職業:物理屋
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST
print "先月子供が産まれました!"
# 最終更新 2022/10/25
カテゴリー
ブログ内検索
リンク
相互リンク募集中です
(Twitterにてお知らせください)
Demo scripts for gnuplot version 5 (gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)
gnuplotスクリプトの解説 (米澤進吾さんの個人ページ、gnuplotと言えばこのかた)
gnuplot のページ (Takeno Lab、うちのブログがリンクされていたのでリンク返し)
Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco (映画の感想をまとめられるサイト、いつもお世話になっています)
Astronomy Picture of the Day Archive (天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)
今日のほしぞら (任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)
GNUPLOTとアニメーション (応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)
読書メーター (読んだ本をリストできる便利なサイト)
flickr難民の写真置き場 (20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)
教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定 (阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)
英語論文執筆用の例文検索サービス (とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)
Demo scripts for gnuplot version 5 (gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)
gnuplotスクリプトの解説 (米澤進吾さんの個人ページ、gnuplotと言えばこのかた)
gnuplot のページ (Takeno Lab、うちのブログがリンクされていたのでリンク返し)
Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco (映画の感想をまとめられるサイト、いつもお世話になっています)
Astronomy Picture of the Day Archive (天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)
今日のほしぞら (任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)
GNUPLOTとアニメーション (応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)
読書メーター (読んだ本をリストできる便利なサイト)
flickr難民の写真置き場 (20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)
教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定 (阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)
英語論文執筆用の例文検索サービス (とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)
最新記事
(11/20)
(03/05)
(02/29)
(02/21)
(02/21)
(02/21)
(02/21)
(01/13)
(01/05)
(01/05)