僕のYak Shavingは終わらない

車輪の再発明をやめたらそこには壮大なYakの群れが

zshでtmuxのコマンドを超々手抜きで補完する

以下を.zshrcに追加

# tmux list-commands | sed -e 's/ .*$//' よりリストを取得している
_tmux() {
    compadd attach-session bind-key break-pane capture-pane choose-buffer choose-client choose-list choose-session choose-tree choose-window clear-history clock-mode command-prompt confirm-before copy-mode delete-buffer detach-client display-message display-panes find-window has-session if-shell join-pane kill-pane kill-server kill-session kill-window last-pane last-window link-window list-buffers list-clients list-commands list-keys list-panes list-sessions list-windows load-buffer lock-client lock-server lock-session move-pane move-window new-session new-window next-layout next-window paste-buffer pipe-pane previous-layout previous-window refresh-client rename-session rename-window resize-pane respawn-pane respawn-window rotate-window run-shell save-buffer select-layout select-pane select-window send-keys send-prefix server-info set-buffer set-environment set-option set-window-option show-buffer show-environment show-messages show-options show-window-options source-file split-window start-server suspend-client swap-pane swap-window switch-client unbind-key unlink-window
}
compdef _tmux tmux

そしてtmuxと打ちこんだあとに[TAB]を押すと・・・


f:id:kazuph1986:20130327213600j:plain
わーい全部出たwwwwww


と思っていたらちゃんと絞り込めます。
f:id:kazuph1986:20130327213652j:plain

f:id:kazuph1986:20130327213803j:plain

f:id:kazuph1986:20130327213810j:plain

f:id:kazuph1986:20130327213816j:plain
ワーイワーイ

とりあえずここまで。

このあと入力するべきオプションとかも補完できる気がする。
zshの補完についてはちゃんと勉強したいなぁ。

参考
Tmuxinator Zsh Completion - Claus Witt
zsh補完関数を自作すると便利 - HAKOBE blog ♨
zsh補完関数の書き方