pecoをランチャーのようにして使う
前回に引き続き、pecoが大変気に入ったので、その後もいろいろネットで情報さがしたりしてました。それで
peco/percolでCUIなスニペットツールを作ってみる
の記事を見て同じこと導入してみました。いやはや便利。元記事に感謝。ついでに多少カスタマイズして、スニペットの先頭にラベルをつけてみました。
手順
zshの場合は以下のような関数を.zshrc
などに記述しておく
function peco-snippets() { local line local snippet if [ ! -e ~/.snippets ]; then echo "~/.snippets is not found." >&2 return 1 fi line=$(grep -v "^#" ~/.snippets | peco --query "$LBUFFER") if [ -z "$line" ]; then return 1 fi snippet=$(echo "$line" | sed "s/^\[[^]]*\] *//g") if [ -z "$snippet" ]; then return 1 fi BUFFER=$snippet zle clear-screen } zle -N peco-snippets bindkey '^x^x' peco-snippets
bashの場合は以下のような関数を.bashrc
などに記述
function peco-snippets() { local line local snippet if [ ! -e ~/.snippets ]; then echo "~/.snippets is not found." >&2 return 1 fi line=$(grep -v "^#" ~/.snippets | peco --query "$READLINE_LINE") if [ -z "$line" ]; then return 1 fi snippet=$(echo "$line" | sed "s/^\[[^]]*\] *//g") if [ -z "$snippet" ]; then return 1 fi READLINE_LINE="$snippet" READLINE_POINT=${#READLINE_LINE} clear } bind -x '"\C-x\C-x":peco-snippets'
あとはスニペットファイル.snippet
に[***]
の形式でラベルをつけたコマンドを記述しておく。
# SSH [ローカル仮想環境へSSH接続:local-server01:connect] ssh kohkimakimoto@192.168.56.21 -p 22 # Vagrant [ローカル仮想環境Vagrant状態確認:status] cd /Users/kohkimakimoto/Documents/vagrant/hk && vagrant status && cd - [ローカル仮想環境Vagrant起動:up] cd /Users/kohkimakimoto/Documents/vagrant/hk && vagrant up && cd - [ローカル仮想環境Vagrant停止:halt] cd /Users/kohkimakimoto/Documents/vagrant/hk && vagrant halt && cd - # etc [Snippetsファイルを開く:open] subl ~/.snippets [Shell拡張設定ファイルを開く:open] subl ~/.shell_extention
2014/06/30編集
.snippetsを読みに行く前にファイルの存在チェックをいれました。
2014/07/01編集
コマンド内に[]があるとラベル削除がうまくいかないところを直しました。