Autouzupełnianie terminala: przeglądaj sugestie


37

Miałem to w konfiguracji Ubuntu i odkąd przeszedłem na Fedorę, chcę to ustawić i zapomniałem, jak ... Pomysł jest prosty:

Nie chcę, aby terminal wyświetlał mi sugestie, kiedy podwajam tab, zamiast tego chcę, aby cyklicznie przewijał każdą możliwą sugestię przy każdym naciśnięciu tab... to można zrobić również w Vimie.

Więc kiedy piszę gedit ai naciskam tab, pokaże mi każdy plik z pierwszą literą a.


Odpowiedzi:


51

Jest to tak naprawdę funkcja readline o nazwie menu-complete. Możesz powiązać go z kartą (zastępując domyślną complete), uruchamiając:

bind TAB:menu-complete

Prawdopodobnie chcesz to dodać do swojego ~/.bashrc. Możesz też skonfigurować go dla wszystkich uzupełnień readline (nie tylko bash) w ~/.inputrc.

Możesz także znaleźć bind -p(pokaż bieżące powiązania, zwróć uwagę, że pokazuje tab as "\C-i") i bind -l(wymień wszystkie funkcje, które można powiązać) przydatne, a także sekcję edycji linii w podręczniku bash i dokumentację readline .


3
@vanjadjurdjevic: Jasne, po prostu połącz je z różnymi kluczami.
derobert

4
menu-completejest fajny, ale ukrywa listę wszystkich możliwych sugestii ;-( Czy można zarówno zobaczyć listę, jak i przeglądać opcje?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

2
@CiroSantilli 轩 事件 法轮功 包 卓 轩 Podoba mi się również ta funkcja w powłokach opartych na readline. Obecnie sposób na zrobienie tego jest bardzo fajny: pierwsze naciśnięcie karty pokazuje wszystkie możliwości, drugie naciśnięcie karty rozpoczyna cykliczne uzupełnianie przedmiotów.
xuhdev,

1
Udawajmy, że używasz cdi przeglądasz menu-completekatalogi. Jakim klawiszem naciskasz, aby „wybrać” ten katalog i rozpocząć cykliczną zawartość tego katalogu? Czy jest coś jeszcze do ustawienia / powiązania?
Tony

1
@ Tony tak, wstawi to. Ale jeśli używasz ukośnika do przodu, to jest OK - ścieżka taka jak „ /usr/local//” jest nadal całkowicie poprawna i zacznie uzupełniać menu w środku /usr/local.
derobert

6

Możesz przewijać menu ukończenia w Bash, a także wyświetlać menu przedmiotów. W przeciwieństwie do Zsh, bieżący element menu nie będzie podświetlony.

Dodaj do ~/.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

Dokumentacja od 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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.