zsh + screen で端末に表示されてる文字列を補完する
以前に入力したコマンドの履歴を覚えていて補完してくれるshellはあるが、
端末に表示されている文字列を補完してくれるshellは無いだろうか。
表示されている文字列を補完してくれるshellが欲しい
とvimrc diaryに書かれてたのでzsh + screenで端末に表示されてる文字列を補完する方法を。.zshrcなどに
# dabbrev HARDCOPYFILE=$HOME/tmp/screen-hardcopy touch $HARDCOPYFILE dabbrev-complete () { local reply lines=80 # 80行分 screen -X eval "hardcopy -h $HARDCOPYFILE" reply=($(sed '/^$/d' $HARDCOPYFILE | sed '$ d' | tail -$lines)) compadd - "${reply[@]%[*/=@|]}" } zle -C dabbrev-complete menu-complete dabbrev-complete bindkey '^o' dabbrev-complete bindkey '^o^_' reverse-menu-complete
とか書いておくと端末上に表示されている画面から Ctrl + o で補完することができるようになります。findして長いパスが表示されてるけどいちいちマウスに手を伸ばしてコピペ、とかせずにすむので時たま役に立ちます。
関係ないですが、先日はてなエンジニアにzshやscreenのtipsを披露したのですが「おおすげぇ!」「もっと教えて!」みたいに周りがヨイショしてくれたので、嬉しくて自分も積極的に情報を書いていこうと思いました。そういう温度な職場の雰囲気で、とても楽しいです。