Created
October 7, 2014 02:32
-
-
Save lamanotrama/f281350e604c9ab3a1df to your computer and use it in GitHub Desktop.
tmux auto rename window
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## rename window to repo-name {{{ | |
# http://blog.manaten.net/entry/tmux-repository | |
autoload -Uz vcs_info | |
zstyle ':vcs_info:*' enable git svn | |
zstyle ':vcs_info:*' formats '%r' | |
rename_tmux_window() { | |
[ -n "$TMUX" ] || return | |
LANG=en_US.UTF-8 vcs_info | |
if [[ -n "${vcs_info_msg_0_}" ]]; then | |
tmux rename-window "repo/$vcs_info_msg_0_" | |
else | |
tmux rename-window "osx" | |
fi | |
} | |
autoload -U add-zsh-hook | |
add-zsh-hook chpwd rename_tmux_window | |
if [ -n "$TMUX" ]; then | |
rename_tmux_window | |
fi | |
## }}} | |
あと、shell起動時になぜか2回hookされてしまうの何とかしたい。
ちなににsshのとき新しいwindowたててrenmaeすんのは、よく落ちてるけど、自分の場合こうなった。
ssh_tmux(){
eval server=\${$#}
tmux new-window -n "ssh:$server" "TERM=screen exec ssh $*"
}
ssh_screen(){
eval server=\${$#}
screen -t "ssh:$server" ssh "$@"
}
if [ -n "$TMUX" ]; then
alias ssh=ssh_tmux
elif [ x$TERM = xscreen ]; then
alias ssh=ssh_screen
fi
tmuxでsnippetを流し込む便利なやつ
元ネタ: http://blog.glidenote.com/blog/2014/06/26/snippets-peco-percol/
これだと、一旦クリップボード経由になるのでちょっと面倒なので、tmux経由で流し込む。
まず、↓のようなスクリプトをてきとーに配置
#!/bin/bash
# tmux-snippet.sh
if [ -z "$1" -o -z "$2" ];
then
TMUX_WINDOW=$(tmux list-window | awk '/(active)/{print $(NF-1)}')
TMPFILE=$(mktemp /tmp/.tmux-snippets.XXXX)
tmux new-window -n "snippets" "cat $HOME/.snippets | peco > $TMPFILE;$0 $TMUX_WINDOW $TMPFILE"
else
tmux send-key -t $1 "$(cat $2)"
rm -f $2
fi
↓をtmux.confに追加。bindをおこのみで
bind-key C-s run-shell "tmux-snippets.sh"
ほほー。あとから試してみる。
formats既に使ってしまってたので,以下のように設定してみた
rename_tmux_window() {
if [ -d .git ]; then
current_dir=${PWD##/*/}
upper_dir=${${PWD%/*}##/*/}
tmux rename-window "${upper_dir}/${current_dir}"
else
tmux rename-window $(uname -n)
fi
}
[ -n "$TMUX" ] && rename_tmux_window
autoload -U add-zsh-hook
add-zsh-hook chpwd rename_tmux_window
window名を親ディレクトリ/現ディレクトリ
にしたかったので,当面はこれでいいや...
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
http://blog.manaten.net/entry/tmux-repository
にあるのはprecmd hookを使ってるけど、それだとretrunする度に実行されるので遅い。
これだと、chpwd時とshell起動時だけなのであんま気にならんかった。