何度も同じコマンド調べ直すのやめませんか?
http://qiita.com/knqyf263/items/01ff865bbab2f5e48d1e
上記記事で存在を知ったpetコマンドMacに導入してみました。とても便利ですね!
ただ、元の記事とGitHubのリポジトリのREADMEには、functionがzsh向けのものしかなかったので、bashでも同様の機能を実現できるように書き換えてみました。
【3/27 18:30追記】 petのGitHubリポジトリのREADMEに反映していただきました!
動作確認環境
- macOS Sierra 10.12.3
- iTerm 2 Build 3.0.15
- Bash 4.4.12 (homebrew経由でインストール)
- macOSデフォルトのBash(3.2.57)でも動くはず
Bash functions for pet
# Bash Functions
## for pet
function prev() {
PREV=$(fc -lrn | head -n 1)
sh -c "pet new `printf %q "$PREV"`"
}
function pet-select() {
BUFFER=$(pet search --query "$READLINE_LINE")
READLINE_LINE=$BUFFER
READLINE_POINT=${#BUFFER}
}
# pet-select function のキーバインド設定
bind -x '"\C-x\C-r": pet-select'
ちなみに pet-select function を呼び出す際、元記事にあるキーバインド C-s
を設定してみましたが、MacのBashだとうまく動かなかったため(※以下参照)、キーバインドは C-x C-r
にしております。
キーバインドは各自お好みで変更してください。
※ キーバインド C-s
で pet-select を呼び出す方法
Macのターミナルでは、キーバインドに C-s
を設定してもそのままでは動きません。
どうやら stty の C-s
(画面停止) のキーバインドとバッティングしているようです。
キーバインドに C-s
を設定する場合は .bashrc の中で stty を stop & start することで pet-select のキーバインドが使われるようになります。
# ...
bind -x '"\C-s": pet-select'
stty stop undef
stty start undef
お試しあれ。
参考: http://hogem.hatenablog.com/entry/20090411/1239451878
参考: http://www.itmedia.co.jp/help/tips/linux/l0612.html