tmux pane中の文字を補完する
Julius Plenz - Blog - zsh: complete words from tmux pane
上記のサイトのままなんですが、日本語での参考記事がなかったので。
gitのリビジョン IDを表示して、それを git showするとき、いちいち
tmuxのコピーモードでコピーしたり、GUIの機能でコピペというのが
面倒だったので探していたら見つかりました。
設定
大文字、小文字の区別をなくすことは不要だったのでなくしています。
あとキーバインドは Emacsっぽく "M-/", "M-?"にしてみました。
# for tmux complete _tmux_pane_words() { local expl local -a w if [[ -z "$TMUX_PANE" ]]; then _message "not running inside tmux!" return 1 fi w=( ${(u)=$(tmux capture-pane \; show-buffer \; delete-buffer)} ) _wanted values expl 'words from current tmux pane' compadd -a w } zle -C tmux-pane-words-prefix complete-word _generic zle -C tmux-pane-words-anywhere complete-word _generic bindkey '^[/' tmux-pane-words-prefix bindkey '^[?' tmux-pane-words-anywhere zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' completer _tmux_pane_words zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' ignore-line current zstyle ':completion:tmux-pane-words-anywhere:*' matcher-list 'b:=*'
"M-/"で入力文字と一致するものを補完、"M-?"の場合は入力文字列が含まれる文字列を
補完します。ただし後者の方は "/"とか入っていると期待通りにならないので、
使いづらいです。補完関数の書き方でなんとかなるんだろうけど、全然わからないんで
今のところはこれでよしとします。
おわりに
tmux使っている人は便利に使えるんじゃないかなと思います。