Остановить zsh от завершения родительских каталогов

Остановить zsh от завершения родительских каталогов

Я использую zsh с grml's zshrc в качестве базы. В рамках своей работы я регулярно обращаюсь к сетевому пути (например, NFS. AFS.)

Если я напишу /a/long/network/path/on/the/other/side/of/the/world и нажму TAB дважды, то это будет ужасно медленно, так как zsh начнет поиск в /a/, затем в /a/long /a/long/network и т. д.

В то же время запуск ls /a/long/network/path/on/the/other/side/of/the/world возвращает ответ через секунду. Поэтому я хотел бы сказать zsh, чтобы он перестал сомневаться в моих словах. (Если я напишу /usr/src/linuxx/ и затем нажму Tab, он поймет, что я хотел /usr/src/linux/, и это здорово, однако, потому что сеть приносит мне больше вреда, чем пользы). Я хотел бы, чтобы автодополнение выполнялось только «в конце» после последнего слеша.

Иногда я использую обходной путь cd в каталог, а затем использую автодополнение. Конечно, должен быть лучший способ.

Как мне этого добиться?

решение1

Такое поведение настраивается черезстили(за исключением нескольких основных, у которых есть опции). Вам нужно будет отключитьpath-completion.

По умолчанию автодополнение имени файла проверяет все компоненты пути, чтобы увидеть, есть ли автодополнения этого компонента. Например, /u/b/zможет быть завершено до /usr/bin/zsh. Явная установка этого стиля на false запрещает это поведение для компонентов пути до /курсора

zstyle ':completion:*' path-completion false

Возможно, вы захотите включитьaccept-exact-dirsвместо этого. Если path-completionоставить включенным и accept-exact-dirsвключить, zsh будет пытаться завершить только компоненты пути, отличные от последнего, если путь не существует.

zstyle ':completion:*' accept-exact-dirs true

Связанный контент