クリップボードの履歴から検索して再利用する(mac)

More than 1 year has passed since last update.

シェルスクリプトごりごり書いた(˘ω˘)

percol_clipBoard.jpg

概要(できるようになること)

シェル(zsh)上で alt + cを押すと上のような画面が表示されて今までのクリップボードの履歴が表示される

検索して行を選びEnterを押すとその行が再びクリップボードに入って再利用できる

導入(3ステップ)

①インストール

②ClipMenuの設定のGeneral(日本語環境だったら文言違うかも)で

max clipboard history size10000 に変更 (適宜変更可)
Autosaving clipboard historyEvery minute に変更

③.zshrcに追加

.zshrc
#percolでクリップボード検索
function searchClipBoard() {
    clipMenuPath='$HOME/Library/Application Support/ClipMenu'
        plutil -convert xml1 $HOME/Library/Application\ Support/ClipMenu/clips.data -o - |\
        awk '/<string>/,/<\/string>/'|\
        sed -e 's/<string>//g' -e 's/<\/string>//g' -e 's/&lt;/</g' -e 's/&gt;/>/g' |\
        head -5015 |tail -5000 |\
        sed '/^$/d'|cat -n |sort -k 2|uniq -f1 |sort -k 1 |\
        sed -e 's/^ *[0-9]*//g' |\
        awk '{for(i=1;i<NF;i++){printf("%s%s",$i,OFS=" ")}print $NF}' |\
        percol |sed -e "s/\ /\\\ /g" |\
        sed -e 's/\\ / /g' |ruby -pe 'chomp' |pbcopy
    zle reset-prompt
};
zle -N searchClipBoard
bindkey '^[c' searchClipBoard

これで .zshrcを読み直す($ source .zshrc)

快適ヾ(:3ノシヾ)ノシ

補足

・ショートカットは変更可能
・shellscriptの head -5015 |tail -5000のところで要らない15件を排除して5000件取ってくるようにしてるので、500件だけとりたかったら
head -515 |tail -500 に変える
・他のクリップボード管理系のアプリでも履歴一覧さえ取ってこればできる