[zsh]Terminalでhistoryからの補完[bash]

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

履歴からコマンド補完

前にこのコマンドつかったけど、どんなオプションつかったんだっけなぁというケースに陥ることが私は多いです。
そんなときは履歴ファイル(私はzshを使用しているので、~/.zsh_history)から探したり、コマンド履歴を延々遡ったリしていたのですが、
コマンドから履歴を検索して補完してくれる方法を見かけたのでご紹介。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.4
  • shell : zsh 4.3.11

zshの場合

.zshrcに、次の記述を追加しましょう。

bindkey "^p" history-beginning-search-backward-end
bindkey "^n" history-beginning-search-forward-end

記述したらsource ~/.zshrcでロードし直し、補完したいコマンド名を入力してctrl + pを押してみてください。
historyから補完された結果が表示されます。

bashの場合

私は試してないのですが、bashの場合はホームディレクトリの.inputrc(なければ作成)に次の記述をすれば、
矢印キーで補完が効くようになるみたいです。

# ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward