LoginSignup
1
1

More than 5 years have passed since last update.

macOSのbashでpetコマンドのfunctionを使用する方法

Last updated at Posted at 2017-03-27

何度も同じコマンド調べ直すのやめませんか?
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

~/.bashrc
# 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 のキーバインドが使われるようになります。

~/.bashrc
# ...
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

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1