1. ホーム
  2. linux

[解決済み] bashの履歴補完で、すでにある行を補完するようにするにはどうしたらいいですか?

2022-06-01 21:44:18

質問

数ヶ月前に、上矢印を押したときに、すでにその行にあるものをbashの履歴にオートコンプリートさせるコマンドを発見しました。

$ vim fi

プレス

$ vim file.py

大きな履歴を保持するときに多くの時間を節約できるので、新しいコンピュータでこれをセットアップしたいと思います。問題は、それが言及された場所をどうしても思い出せず、無限の bash リファレンスとチュートリアルを読んでも、残念ながら役に立たなかったということです。

誰かそのコマンドを知っていますか?

どのように解決するのですか?

おそらく、次のようなものでしょう。

# ~/.inputrc
"\e[A": history-search-backward(ヒストリ-サーチ-バックワード
"\e[B": history-search-forward(ヒストリ-サーチ-フォワード

または同等に

# ~/.bashrc
if [[ $- == *i* ]] とします。
それから
    bind '"\e[A": history-search-backward'。
    bind '"\e[B": history-search-forward'。
fi

(if文は対話型モードかどうかのチェック)

通常、UpとDownはReadline関数に束縛されています previous-historynext-history をそれぞれ使用します。 私は、Up/Downの通常の操作を置き換えるのではなく、PgUp/PgDnをこれらの関数にバインドすることを好みます。

# ~/.inputrc
"\e[5~": history-search-backward(履歴検索-後方)
"\e[6~": history-search-forward(ヒストリーサーチフォワード)

を修正した後 ~/.inputrc を変更したら、シェルを再起動するか Ctrl + X , Ctrl + R 再読込を指示するために ~/.inputrc .


ちなみに、関連ドキュメントをお探しなら

Bash は GNUリードラインライブラリ を使用しています。