Автозаповнення терміналу: цикл пропозицій


37

У мене це було в моїй установці Ubuntu, і після переходу на Fedora я хочу його встановити, і я забув, як ... Ідея проста:

Я не хочу, щоб термінал показував мені пропозиції, коли я подвоююся tab, натомість я хочу, щоб він переглядав усі можливі пропозиції з кожним натисканням на кнопку tab... це можна зробити і у Vim.

Тож коли я набираю gedit aі натискаю, tabвін показує мені кожен файл із першою літерою a.


Відповіді:


51

Це насправді функція readline, яка називається menu-complete. Ви можете прив’язати його до вкладки (замінивши за замовчуванням complete), виконавши:

bind TAB:menu-complete

Можливо, ви хочете додати це до свого ~/.bashrc. Крім того, ви можете налаштувати його для всіх завершень читання рядків (а не лише bash) в ~/.inputrc.

Ви також можете знайти bind -p(показати поточні прив'язки, зверніть увагу, що відображає вкладку як "\C-i") та bind -l(перелічити всі функції, які можуть бути пов'язані) корисними, а також розділ редагування рядків посібника bash та документацію для читацької лінії .


3
@vanjadjurdjevic: Звичайно, просто прив'яжіть їх до різних клавіш.
дероберт

4
menu-completeкласно, але він приховує список усіх можливих пропозицій ;-( Чи можна як переглянути список, так і переглянути варіанти?
Ciro Santilli 新疆 改造 中心 中心 六四 事件

2
@CiroSantilli 六四 事件 法轮功 包 卓 轩 Мені також подобається ця функція в оболонках на основі читання. В даний час zsh спосіб зробити це дуже круто: перший хіт вкладки показує всі можливості, другий хіт вкладки починає цикл елементів завершення.
xuhdev

1
Давайте припустимо, що ви використовуєте cdі menu-completeі їзда на велосипеді через каталоги. Яку клавішу ви натискаєте, щоб "вибрати" цей каталог і почати циклікувати вміст цього каталогу? Чи є інша річ, яку потрібно встановити / зв’язати?
Тоні

1
@ Тоні так, він вставить його. Але якщо ви скористаєтеся косою косою рисою, все в порядку - шлях на зразок " /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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.