zsh + tmux で端末に表示されてる文字列を補完する


===============================================

zsh + screen で端末に表示されてる文字列を補完する - 2nd life の tmux 版。

tmux に移ったころもう不要だと思ってなにもしなかったけど、これ意外と使いたい時があるのよねぇ。

コピペして.zshrcにでも貼れば動くと思う。

HARDCOPYFILE=/tmp/tmux-hardcopy
touch $HARDCOPYFILE

dabbrev-complete () {
  local reply lines=80

  tmux capture-pane && tmux save-buffer -b 0 $HARDCOPYFILE && tmux delete-buffer -b 0
  reply=($(sed '/^$/d' $HARDCOPYFILE | sed '$ d' | tail -$lines))

  compadd -Q - "${reply[@]%[*/=@|]}"
}

zle -C dabbrev-complete menu-complete dabbrev-complete
bindkey '^o' dabbrev-complete
bindkey '^o^_' reverse-menu-complete

ほぼ、screen のコマンド部分を tmux に変えただけ。
一応変更点として、ファイル保存先 /tmp にしたのと~/Documentsみたいなのの~\~にならないようにしたはず。