2

В оболочке, которая реализует GNU Readline, я могу нажать на клавишу, чтобы получить список возможных дополнений к тому, что я начал печатать. Например:

C:\>cd P<TAB>
PerfLogs\             Program Files (x86)\  Python27\
Program Files\        ProgramData\

Как теперь я могу выбрать, какое завершение я хочу использовать?

Я знаю, что если я хочу "Program Files" в приведенном выше примере, я могу набрать "rogram Files", но я ленивый :).

Разве у меня нет способа нажать комбинацию клавиш, которая будет перебирать возможные завершения, чтобы я мог быстро выбрать один? Что-то похожее на автозаполнение / intellisense в современных IDE?

Изменить: Может ли мое решение использовать команду menu-complete GNU Readline (описано ниже)? Но как мне связать это с комбинацией клавиш?

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. 

3 ответа3

5

В оболочке, которая использует readline , вам нужно привязать menu-complete к клавише. По умолчанию он не связан, complete .

Для этого отредактируйте ~/.inputrc и добавьте следующее:

TAB: menu-complete

Это, вероятно, повлияет на все программы, которые используют readline . Используйте следующее, чтобы применить это только к bash:

$if Bash
   TAB: menu-complete
$endif
1

Завершение командной строки работает двумя различными способами, в зависимости от платформы.

Windows (NT и более поздние версии)

Прежде всего, командный процессор Windows (cmd.exe) не поддерживает GNU Readline. Несмотря на это, он поддерживает завершение табуляции.

В частности, cmd.exe использует "завершение вращения", где на каждой вкладке представлена отдельная опция.

В вашем примере, нажав Tab , вы PerfLogs , затем Program Files и т.д.

Баш (и другие оболочки Unix)

В большинстве оболочек Unix используется "завершение запроса", когда, как сказал Дэниел выше, вам нужно ввести другой символ, чтобы сузить завершение.

См. Этот раздел связанной выше статьи Википедии для получения дополнительной информации.

0

В частности, в отношении этой части вопроса

Разве у меня нет способа нажать комбинацию клавиш, которая будет перебирать возможные завершения, чтобы я мог быстро выбрать один? Что-то похожее на автозаполнение / intellisense в современных IDE?

Я бы сказал, что fzf - это то, что вы можете исследовать. Это довольно быстрый нечеткий инструмент поиска и выбора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .