Как настроить завершение bash для расширения частичного пути, как в emacs minibuffer-complete?

Я хотел бы настроить свою оболочку bash для расширения частично введенной древовидной структуры, как это делает команда emacs «minibuffer-complete».

Представьте, что у меня есть две папки, foo1 и foo2. foo1 содержит подпапку sub1, а foo2 содержит подпапку wow. Так что я:

foo1/sub1/

foo2/вау/

Теперь при открытии файла в emacs, если я наберу

f/w

и нажмите TAB, он автоматически расширится до «foo1/wow/».

Я хотел бы иметь аналогичную функциональность в bash. Любые идеи?


person alex    schedule 23.08.2012    source источник
comment
По умолчанию f*/w*‹вкладка› должна предоставлять вам аналогичную функциональность. Чтобы получить больше похожего на то, что вы описываете, вам нужно написать функцию завершения.   -  person geirha    schedule 23.08.2012


Ответы (3)


Хотя я не знаю, как это сделать в bash, и даже если это возможно, я знаю, что если вы измените свою оболочку на zsh, это можно сделать.

По умолчанию он не включен, и я тоже не знаю, как его включить, но я использую конфигурацию zsh grml, что позволяет расширить возможности, о которых вы говорите.

Zsh, особенно в сочетании с указанной конфигурацией, также имеет много других полезных функций.

Если вы не хотите менять оболочку, то, боюсь, это бесполезный ответ.

person Squidly    schedule 23.08.2012

вы можете сделать это наоборот, используя команду оболочки emacs M-x. Он открывает буфер Shell с автозаполнением, как в минибуфере.

person TheDrev    schedule 26.04.2013

Раскрытие информации: я автор проекта

Я написал функции завершения, необходимые для включения такого завершения в bash: https://github.com/sio/bash-complete-partial-path

Надеюсь, вы найдете этот проект полезным

person SIO    schedule 08.08.2018