最近、引数なしで新しい tmux セッションを作成する便利な Zsh 関数を作成しました。引数が指定され、セッションが既に存在する場合は、アタッチされます。それ以外の場合は、指定された名前で新しいセッションが作成されます。
# If the session is in the list of current tmux sessions, it is attached. Otherwise, a new session
# is created and attached with the argument as its name.
ta() {
# create the session if it doesn't already exist
tmux has-session -t $1 2>/dev/null
if [[ $? != 0 ]]; then
tmux new-session -d -s $1
fi
# if a tmux session is already attached, switch to the new session; otherwise, attach the new
# session
if { [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; } then
tmux switch -t $1
else
tmux attach -t $1
fi
}
これはうまく機能しますが、オートコンプリートを追加したいので、Tab キーを押すと現在のセッションが一覧表示されます。これが私がこれまでに持っているものです:
# List all the the sessions' names.
tln() {
tmux list-sessions | perl -n -e'/^([^:]+)/ && print $1 . "\n"'
}
compctl -K tln ta
タブを押すと、セッション名が一覧表示されますが、それらを切り替えることはできません。私は何が欠けていますか?