Как убрать дополнительный пробел из функции автозавершения zsh? - PullRequest
6 голосов
/ 04 декабря 2011

Я использую compctl -K _my_cpl ls, чтобы подключить свою функцию автозаполнения к команде ls. Функция возвращает список имен из индексного файла.

Однако zsh всегда добавляет пробел после каждого завершения. Если я хочу автоматически заполнить многоуровневую директорию, мне нужно каждый раз удалять пробел. Есть ли способ удалить дополнительное пространство, как опция -o nospace в команде bash complete?

Я протестировал команду zstyle ':completion:*' add-space false, и она не работает. Спасибо.

_my_cpl() {
local cur last opts

# current word in command line.
read -cA cur
last=$cur[-1]

# grep all directories and file names under current directory level.
opts=`egrep "${last}[^/]*[$|/]*" ~/index -o |uniq`

reply=($=opts)
}
compctl -K _my_cpl ls

1 Ответ

2 голосов
/ 04 декабря 2011
compctl -K _my_cpl -S '' ls

Это отвечает на вопрос, который вы задали, но может быть недостаточно гибким для того, что вы хотите сделать. В частности, этот подход не позволяет указать другой суффикс для каталогов и обычных файлов. Если вы хотите этого, я думаю, вам нужно переключиться на «новую» систему завершения и сделать отдельные вызовы к compadd с разными -S аргументами.

...