私は履歴を逆に検索するよりも、履歴を逆に検索する方が好きです。前者では、検索キーを押してから検索文字列を入力するのとは対照的に、数文字のコマンドを入力してから検索キーを押すことができます。
私のシステムのデフォルトでは、M-p と M-n は似たような関数にバインドされていますが、私は矢印キーにバインドする方が好きです。
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'
素晴らしい書き込みですね、ショーン! これをコメントに入れようと思っていたのですが、数点の評価ポイントを恥ずかしがっています。)
もう一つの関連した便利なテクニックは、単語を変更しながら前のコマンドを実行する機能です。
$ echo my name is bob my name is bob $ ^bob^jordan echo my name is jordan my name is jordan
0x1&
コマンドを実行する前に、コマンドが展開され、置換され、出力されることに注意してください。
Ctrl-r を使った履歴のナビゲーションは面倒なので、hh .
を検討してみてはいかがでしょうか。 [ https://github.com/dvorka/hstr ]0x3&
これは、コマンドの実行を含めて、ナビゲーションをよりシンプルに、わかりやすく、効率的にしてくれます。
シェルが vi
キーバインドを使用するように設定されている場合(set -o vi
または set editing-mode vi
に $HOME/.inputrc
が含まれている場合)、<Esc>/some-command<Return>
で検索して n
(next) または Shift-n
(previous) を押すと、コマンドラインの履歴を循環させることができます。
HSTRは好きなのですが、たまにインストールできないことがあります。そこで、 fzf を使ってエイリアスを書いてみました。これはその動作を模倣したものです(hx
, “history execute "を意味します)
alias hx='eval $(history | sed "s/^ *[0-9]* *//g" | fzf --tac --tiebreak=index --height=10)'
history
: まあ、履歴を取得する sed
: リストから数字の列を削除する (POSIX) fzf
: ここに魔法があり、対話的にリストをファジーサーチしたり、C-J
とC-K
で移動したり、Enter
でコマンドを実行したりすることができます。--height
: 表示される行数を設定します。--tac
: リストを元に戻す (履歴としてはより論理的) --tiebreak=index
: fzf が結果を更新したときに履歴の順序を保持する。