У меня есть проект с глубоко вложенной структурой папок. Большую часть времени я знаю имя файла, с которым я хочу работать, но путь к папке слишком длинный / сложный для ввода, когда я хочу отредактировать его, например:

vim folder/is/deep/down/there/myfile.js

Есть ли способ заставить оболочку автоматически заполнять путь для меня, если имя файла уникально, с чем-то вроде:

vim *myfile.js

нажмите вкладку

vim folder/is/deep/down/there/myfile.js

В основном я использую bash, но с zsh у меня все в порядке, если он может решить проблему.

2 ответа2

1

В zsh вы можете использовать оператор ** для этого:

vim **/myfile.js

Затем нажмите Tab и zsh будет рекурсивно искать файл myfile.js .

0

В Bash 4 и выше вы также можете использовать оператор ** для подстановки (для извлечения имен файлов) и для завершения табуляции (аналогично zsh-ответу из Heptite).

Я не знаю, когда в Bash были добавлены вкладки для ** (вероятно, 4.0) или даже если они стандартные, но они работают для меня в 4.3.11 (на Lubuntu). Похоже, они активированы по умолчанию.

Однако поведение ** универсализации не активируется по умолчанию, и требует , чтобы вы установили опцию globstar с помощью shopt Другими словами, выполните shopt -s globstar где-то перед тем, как пытаться использовать ** в шаблоне глобинга (скорее всего, в вашем .bashrc). Стоит отметить, что активация globstar может помешать завершению вашей вкладки, если есть несколько совпадений. Я обнаружил это в быстром тесте.

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