bashでコマンドの一部を入力した後にctrl-rを使用する方法はありますか?


13

bashでは、Ctrl+ rコマンドは非常に便利です。Ctrl+ r whateverと入力すると、単語を含むコマンドの履歴が検索されますwhatever。しかし、私は、入力した場合whatever、私はその言葉を検索し、ヒットしたいことを実現Ctrl+ r何も起こりません。

キーを押して、Ctrl+ r whateverではなくwhatever Ctrl+を入力したかのように動作させる方法はありrますか?

私は次のものを持っています.inputrc

"\C-p": history-search-backward

ただし、これは行の先頭が同じ場合にのみ機能します。

回答:


12

すでに簡単に入力したものを使用して、bashの履歴を検索できます。

入力curl -I http://superuser.comしたばかりで、最初にCtrl+ を入力するのを忘れたとしますr

$ curl -I http://superuser.com

履歴でi-searchを実行する場合は、最初に行の先頭Ctrl+ a)に移動し、i-search(Ctrl+ r)を入力してCtrl+を入力しyます。これは、すでに入力したテキスト全体の内容を使用して検索する必要があります。

(reverse-i-search)`curl -I http://superuser.com': curl -I http://superuser.com/faq

または、Ctrl+のw代わりにCtrl+ yを使用して、入力したテキストの最初の単語のみを使用して検索することもできます。

(reverse-i-search)`curl': curl -I http://superuser.com/faq

すべてを単一のキーにバインドする

このすべてを1回のキーストロークで行いたい場合は、1つのキーをキーボードマクロにバインドできます。たとえば、次をF12実行したい場合:

$ bind '"\e[24~":"\C-a\C-r\C-y"'

それはセッションの間続きます。

永続化する

でマクロを定義するだけ~/.inputrcです:

"\e[24~":"\C-a\C-r\C-y"

ここでは一重引用符を省略していることに注意してください。

この答えが役に立つかもしれません。


1
構成に問題があるかどうかはc-rわかりc-yませんが、入力した後は何も貼り付けられません。私が入力した場合はc-y、それ自体で、私は2つのコマンドを組み合わせることはできませんので、ただ...、テキストを貼り付け
skeept

最初に行頭に行きますか?(Ca)
-hso

1
あなたは正しい、私は行頭に行かなかった。今、私は私の.inputrcに"\C-xr": "\C-a\C-r\C-y"あり、それは非常にうまく動作します!この答えをありがとう。
12

このcontrol+a control+r control+yことをグーグルで検索したのは3回目だと思います!この答えがいつもここにあることに感謝します!:)
ベコ博士

2

4つのストライクを保存します。

Ctrl-R追加して.bashrc(または、.inputrc必要に応じてに追加して)を回避します。

bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r

これにより、ALT-RCTR-AにマッピングされますCTR-R CTR-Y CTR-R

説明:

  • ALT-R:バインディングキー。別の良いオプションは\C-xrCTR-X CTR-R
  • CTR-A:行の先頭に移動します(書き込まれた内容を記憶します)
  • CTR-R:逆検索を開始します
  • CTR-YCTR-Aが検索の一部として記憶したものを貼り付けます
  • CTR-R:これまでの文字で逆検索をトリガーします

Cyがコマンドを検索フィールドに貼り付ける理由(Caは「コピー」コマンドではないのですか?)、およびCwが最初の単語のみを貼り付ける理由はまだわかりません。
マーカス

はい、C-a移動するだけでなく、移動したコンテンツを記憶(コピー)します。
ベコ博士

その動作を確認することはできません(Ca Cyを試してみてください)、Crには特別なケースが組み込まれている可能性が高いと思いますが、どこに文書化されているかわかりません。
マーカス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.