ターミナルのオートコンプリート:提案を循環


37

Ubuntuのセットアップでこれを使用していましたが、Fedoraに切り替えてから設定したいのですが、どのようにすればいいのか忘れてしまいました...アイデアは簡単です:

tabになったときに端末に提案を表示したくないので、代わりに各プレスをオンにして可能な限りすべての提案を循環させたいtab...これはVimでも行うことができます。

したがって、入力gedit aして押すtabと、すべてのファイルに最初の文字が表示されますa


回答:


51

これは実際にはと呼ばれるreadline機能ですmenu-complete。タブにバインドできます(デフォルトを置き換えるcomplete)。

bind TAB:menu-complete

あなたはおそらくそれをあなたに追加したいでしょう ~/.bashrc。あるいは、ですべてのreadline補完(bashだけでなく)に設定することもできます~/.inputrc

また、bind -p(現在のバインディングを表示し、タブをとして表示することに注意してください"\C-i")およびbind -l(バインド可能なすべての関数をリストして)有用であるだけでなく、bashマニュアルの行編集セクションreadlineのドキュメントもあります


3
@vanjadjurdjevic:もちろん、それらを異なるキーにバインドするだけです。
デロバート

4
menu-completeクールですが、すべての可能な提案のリストを非表示にします
;-(

2
@CiroSantilli六四事件法轮功包卓轩私もこの機能がreadlineベースのシェルで好きです。現在、それを行うzshの方法は非常にクールです。タブの最初のヒットはすべての可能性を示し、タブの2番目のヒットは完了アイテムの循環を開始します。
xuhdev

1
を使用cdしてmenu-complete、ディレクトリを循環しているとしましょう。そのディレクトリを「選択」して、そのディレクトリのコンテンツの循環を開始するには、どのキーを押しますか?設定/バインドする別のことはありますか?
トニー

1
@Tonyええ、挿入します。ただし、スラッシュを使用する場合は問題ありません。「/usr/local//」のようなパスは依然として完全に有効であり、メニューの完成を開始します/usr/local
デロバート

6

Bashの完了メニューを順に切り替えることができ、アイテムのメニューを表示することもできます。Zshとは異なり、現在のメニュー項目は強調表示されません。

に追加~/.inputrc

set show-all-if-ambiguous on
set show-all-if-unmodified on
set menu-complete-display-prefix on
"\t": menu-complete
"\e[Z": menu-complete-backward

からのドキュメントman bash

Readline Variables
    menu-complete-display-prefix (Off)
           If set to On, menu completion displays the common prefix of the
           list of possible completions (which may be empty) before cycling
           through the list.
    show-all-if-ambiguous (Off)
           This alters the default behavior of the completion functions. If
           set to On, words which have more than one possible completion
           cause the matches to be listed immediately instead of ringing
           the bell.
    show-all-if-unmodified (Off)
           This alters the default behavior of the completion functions in
           a fashion similar to show-all-if-ambiguous. If set to On, words
           which have more than one possible completion without any
           possible partial completion (the possible completions don't
           share a common prefix) cause the matches to be listed
           immediately instead of ringing the bell.

Completing
    menu-complete
          Similar to complete, but replaces the word to be completed with
          a single match from the list of possible completions. Repeated
          execution of menu-complete steps through the list of possible
          completions, inserting each match in turn. At the end of the list
          of completions, the bell is rung (subject to the setting of
          bell-style) and the original text is restored. An argument of
          n moves n positions forward in the list of matches; a negative
          argument may be used to move backward through the list. This
          command is intended to be bound to TAB, but is unbound by
          default.
    menu-complete-backward
          Identical to menu-complete, but moves backward through the list
          of possible completions, as if menu-complete had been given
          a negative argument. This command is unbound by default.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.