2

Когда я использую стандартное завершение табуляции в bash или zsh, я набираю первую часть имени файла или пути, а затем нажимаю, чтобы завершить слово. Это работает хорошо, если я не нахожусь в каталоге, полном файлов, где все различия в именах файлов находятся в конце слова, например, в каталоге, полном файлов с метками времени, которые начинаются с одного и того же префикса:

foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log

В этом случае, если я наберу foo<tab> я получу foo-20120701124 - я смогу снова перейти на вкладку и посмотреть все файлы ... Мне нужно будет ввести следующие 3 символа, чтобы получить уникальное имя файла.

Мне интересно, есть ли способ напечатать, например, 4731.log а затем завершить начало слова. Я предполагаю, что это было бы сложно в bash, потому что для завершения bash используются $COMP_CWORD и $COMP_KEY для его программируемого завершения, и из-за того, что я читаю, я не думаю, что они позволят завершить слово влево , Я не знаю достаточно о завершении внутри zsh, чтобы знать, с чего начать поиск по страницам руководства.

1 ответ1

2

Это будет работать только в том случае, если перед нажатием вкладки есть ведущая команда. Скорее всего, это не то, что вы ищете, а единственное, что я мог получить желаемые результаты. Приведенный ниже пример должен работать в вашем случае. Вам просто нужно быть в конце * 4731.log и нажать 1 раз на вкладке. Если он уникален, он будет автоматически завершен.

ls *4731.log

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