pecoでbashの履歴検索を最高にした
最近仕事でファイルを指定して Rspec を実行する、みたいなことが多い。
spec/~ の中にあるファイル path をその都度コピーしたり、十字キーの ↑ でひたすら探すのが面倒だったため、peco でいい感じに検索 + コマンド実行できるように .bash_profile をいじった。
peco
peco は、渡された入力を incremental search して、出力できる。
ls | peco
をすると、こんな感じで選択された行を出力できる。
peco で bash の履歴検索
やりたいことは、
- .bash_history の出力を peco に渡す。(新しいものから上に表示されると嬉しい)
- peco で選択したコマンドを実行
- 実行したコマンドを history に積む
以下の関数を.bash_profile に追加した。
peco_search_history() {
SELECTED_COMMAND=$(tail -r ~/.bash_history | peco)
if [ "$SELECTED_COMMAND" != "" ]; then
echo "exec: ${SELECTED_COMMAND}"
eval $SELECTED_COMMAND
history -s $SELECTED_COMMAND
fi
}
関数名が長いので alias を設定。
alias his="peco_search_history"
とても捗るようになった。