bash履歴の完了を変更して、すでにラインにあるものを完了するにはどうすればよいですか?


133

数か月前に、上矢印キーを押すと、bashの履歴がすでに行にあるものでオートコンプリートになるコマンドが見つかりました。

$ vim fi

押す

$ vim file.py

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

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

回答:


223

おそらくのようなもの

#〜/ .inputrc
"\ e [A":history-search-backward
"\ e [B":履歴検索フォワード

または同等に、

#〜/ .bashrc
if [[$-== * i *]]
その後
    バインド '"\ e [A":history-search-backward'
    バインド '"\ e [B":history-search-forward'
fi

(ifステートメントはインタラクティブモードをチェックします)

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

#〜/ .inputrc
"\ e [5〜":history-search-backward
"\ e [6〜":履歴検索フォワード

変更後~/.inputrc、シェルを再起動するか、Ctrl+ XCtrl+ Rを使用して再読み取りするように指示します~/.inputrc


ちなみに、関連するドキュメントを探している場合:

Bashは、シェルプロンプトと履歴にGNU Readlineライブラリを使用します。


ご回答有難うございます。これはおなじみのように聞こえますが、残念ながら私にはうまくいきません。.inputrcに配置しても何も変化せず、.bashrcに配置しても矢印が何もしないようにします。何か案は?
blokkie、2009年

気にしないで。history-complete- *は存在しません。history-search- *関数のみが存在します。ありがとう!
blokkie 2009年

ああ、私は明らかに最初の2つの例をそこにタイプミスしました...しかし、最後の例は正しいです 私はそれを修正します。
ephemient 2009年

@ user1037114:これはそれ自体の質問です。自分の投稿で質問してください。
kamaradclimber

これにより、bashでviモードを使用する上矢印/下矢印が修正されました。注:機能させるには、Esc(コマンドモード)を押す必要があります。
クリス

5

.inputrcを次のように更新します。

"\C-[OA": history-search-backward
"\C-[[A": history-search-backward

"\C-[OB": history-search-forward
"\C-[[B": history-search-forward

4
それらのキーは何ですか?
クリス

これらのキーが具体的に何であるかはわかりませんが、X11でtmuxとstターミナルを使用しているときに上方向キーと下方向キーで履歴検索を実行できなかった場合、この回答でこの機能が修正されました。
razzintown 2016年

1
@razzintownの場合、おそらくキーが適切に機能するset enable-keypad onために必要ですdelfaq)。キーパッドが矢印キーの上にあるとき、キーは"\C-[OA"and "\C-[OB"(および"\C-[OC"and "\C-[OD")です。これを明確にするために以下の回答を投稿しました。
MauricioRobayo

@Chrisこれらは、キーパッドモードの上下矢印キー、およびANSIモードの上下矢印キーです。以下の私の答えを参照してください。
MauricioRobayo

3

st(吸い込みの少ないシンプルな端末)ユーザーの場合set enable-keypad onは、矢印キーがキーパッドモードになっていることに注意してください。Ubuntuにはこの便利なものが付属しています:~/.inputrc/usr/share/doc/bash/inputrc.arrows

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

だからあなたがすべてが必要かどうかはわかりませんが、あなたに持っていても害はないかもしれません~/.inputrc

# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char

# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char

これも同じトピックです:カーソルキーが機能せず、このxterm:特殊キー


1

ohmyzshで、あなたにこれを使用.zshrc

bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward

source ~/.zshrcターミナルをリロードまたは再起動します。

出典:https : //superuser.com/a/418299/71680


zshで私のために機能したのは、ソースリンクで指定されたオプションでした。bindkey '\ e [A' history-search-backward bindkey '\ e [B' history-search-forward
Michael Massey

-3

bash補完を有効にする必要がある場合があります。

小切手

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bashrc

上記のファイルがソースであるかどうかを確認します/etc/bash_completion。すなわち

。/ etc / bash_completion

/etc/bash___completion上記のいずれのファイルもソースになっていない場合は、それらのいずれかに追加する必要があります。

マシン上のすべてのbashユーザーにbash補完を実行させたい場合は、/etc/bash_completionから入手してください/etc/bash.bashrc

bash補完が必要なのがあなただけの場合は、/etc/bash_completionからソースを取得します~/.bashrc


2
タブの完成は素晴らしいですが、元のポスターが求めていた履歴の再現とは異なります。
ephemient
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.