Я хочу, щоб нечітке до завершення файлів і каталогів у zsh
. Прочитавши посібник протягом декількох годин, ось що я придумав:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
Крім того, я хочу натиснути TAB
один раз, щоб відобразити можливі завершення, змінивши лише те, що я набрав, якщо є саме одне завершення. Потім натискання TAB
вдруге повинно перевести мене в режим "завершення меню". На основі посібників я придумав таке:
zstyle ':completion:*' menu select
Зараз все працює як слід, за винятком однієї обставини. У мене дві папки Desktop
і .rstudio-desktop
в домашньому довіднику. Оскільки я маю setopt globdots
, я очікую, що введете наступне:
$ cd ~/dktop<TAB>
залишити мою команду як введене, і відобразити як кандидатів на завершення Desktop
та .rstudio-desktop
. Натомість він видаляє dktop
, залишаючи мені таке:
$ cd ~/
Я ознайомився з усіма відповідними посібниками, посібниками, питаннями обміну стеками та іншими іншими джерелами. Але що б я не робив, я не можу зробити цю роботу.
Цікаво, однак, якщо я перебуваю в домашньому каталозі і набираю наступне, то все працює як слід:
$ cd dktop<TAB>
Тобто це лише проблема з непровідними сегментами шляхів (і ви можете бачити, C-x h
що це відповідає directories
тегу, а не local-directories
тегу, який використовується).
Для полегшення відтворюваності, тут є , ~/.zshrc
що буде відтворити ситуацію і поведінку , описане вище (перевірено на свіжої віртуальній машині El Capitan з zsh
від Homebrew).
zsh 5.3.1
ОС X проблема не відтворюється. Цікаво, що між операційними системами є різниця.
zsh 5.3.1
наArch Linux
.cd ~/dktop<tab>
врожайністьcd ~/Desktop
.