zsh: 直前にうったコマンドをクリップボードに(Mac OS X限定)

シェルで打った直前のコマンドをクリップボードにショートカットでコピーとかできたら作業メモとかとるのにえらいベンリだと思った。.zsh-hitory をうまく使ってとかでも。誰か作ってそう。
naoyaの日記より

このネタで、初めてのzshカスタマイズプログラミングをしてみました。案外簡単にできてしまいました。

クリップボードへのコピーにpbcopyを使っているのですが、これは多分Mac OS Xにしかないと思います。ですので、このカスタマイズはMac OS X限定です。Linuxでも同等の機能を持ったコマンドがあれば、少しの改造で動くようになるはずです。

.zshrcに以下のコードを貼付けておけば、naoyaさんのご要望通り動くはずです。コードはちょっとダサイですが、動きます、、。Ctrl + kでクリップボードに直前にうったコマンドが入ります。キーバインドは好みに応じて変更して下さい。

copy-prev-cmd-to-clipboard () {
    ZHIST='.zhistory'
    cat ~/$ZHIST | tail -n 1 | perl -e '$h = <STDIN>; $h =~ m/;(.+)/; print $1;' | pbcopy
}
zle -N copy-prev-cmd-to-clipboard

# ^KはCtrl + v + kで入力する
bindkey '^K' copy-prev-cmd-to-clipboard

参考にした資料はこちら。