coリ・ー・ン<2nd life

2006 01 08

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して長いパスが表示されてるけどいちいちマウスに手を伸ばしてコピペ、とかせずにすむので時たま役に立ちます。

関係ないですが、先日はてなエンジニアzshscreenのtipsを披露したのですが「おおすげぇ!」「もっと教えて!」みたいに周りがヨイショしてくれたので、嬉しくて自分も積極的に情報を書いていこうと思いました。そういう温度な職場の雰囲気で、とても楽しいです。

ElimElim 2006/01/08 13:32 動的展開は素敵だよね。たまに bash を強制されると発狂しそうになるよ。

ElimElim 2006/01/08 13:37 ところで screen ならマウス使うより C-a [ で copy mode に入るのが良いと思うの。別の screen window にも貼れますし。ってごろすけなら知ってるか pq

secondlifesecondlife 2006/01/08 13:37 bashも最近はautocompleteがついてるけど、zshに比べるとまだまだ弱いよねぇ。
autocompleteもそうだけど、zshになれきってるとホント素bash辛い。

secondlifesecondlife 2006/01/08 13:38 copy modeはもちろんよく使ってるよ!

alimikaalimika 2006/01/08 22:53 そんなことよか RSSTIMES (他)が死んでます〜〜〜〜。

secondlifesecondlife 2006/01/08 22:57 rsstimesだけは今日午前中に復活しました。
他は環境周り(linux -> freebsdその他もろもろ)で復旧するのにめっちゃ時間かかるかも。
gorou.zapto.orgは自分がrootな訳じゃなく、サーバ管理人さんが忙しいので…。

moto0215moto0215 2006/01/13 08:52 最近screen使い始めたのでzsh気になってたんですが、こんな便利なことが出来るんですね。ネタ提供ありがとうございます、早速zsh使ってみます。

fumifumi 2007/06/15 14:16 2ch の zsh スレからのパクリならそう断わっておくべきではないですか。
ほとんどまんまでしょ。

senkansenkan 2009/08/09 04:00 感動的に便利です。ありがとうございます! ところで、。。。たとえば ~/documents などと打って、動的補完をかけると、\~/documents/test-files などと、~がエスケープされてしまうのですが、これを避ける方法があればご教示くださいませ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

プログラミングRuby 第2版 言語編
Ruby を始めようと思う人から玄人まで身近に置いておきたい一冊
Ruby on Rails入門―優しいRailsの育て方
Rails 入門書の決定版!あのくまくまーの独特な解説ですんなり読める!