Перейти к содержимому

XCode Command-T-стиль автозаполнения для Zsh

5

Я только начал использовать плагин Command-T для vim, и он работает. Если вы не слышали об этом, это позволяет вам напечатать что-то вроде этого:

Sb 

выбрать Something.hs-boot из списка

src/project/Control/Whatever/Foobs.hs src/project/Control/Whatever/Something.hs-boot src/project/Control/Whatever/Something.hs 

И так далее.

Мне было интересно, смогу ли я использовать подобный стиль автозаполнения с Zsh. Я понимаю, что завершение оболочки не может быть столь же обширным, как завершение vim, потому что завершение оболочки, вероятно, не должно искать всю систему каждый раз, когда вы печатаете букву, но есть ли какое-то подобное завершение, где я мог бы по крайней мере тип

s/p/c/w/Sb<tab> 

и получить эффект, похожий на тот, что выше?

Я слышал, что у zsh довольно хорошо программируемая функция автозаполнения, но мой shell-fu довольно слабый.

Кто-нибудь знает, как это настроить?

503 просмотра
So8res спросил 14 лет назад
S 806

2 ответа

1
Принятый ответ

Чтобы завершить частичные пути, достаточно просто запустить систему завершения (по крайней мере, в моей системе, используя zsh v4.3.17):

autoload -U compinit && compinit zmodload zsh/complist 

Если вы хотите получить немного больше фантазии, вы можете сделать сопоставление без учета регистра:

zstyle ':completion:*' matcher-list 'm:=' 

Обновление 1:

Я не знаю, можете ли вы выполнить автозаполнение в стиле Command-T ... но поскольку zsh должен получить все совпадения, прежде чем он что-то отобразит, это делается на лету, особенно где-то, где много подкаталогов / файлов, может быть неосуществимым.

Однако вы можете использовать:

**/*thing <Tab> 

Соответствует **всем файлам и подкаталогам текущего каталога.

Идея: если это не должен быть обновленный список файлов, вы можете написать функцию завершения, которая использует вывод locate(то есть предварительно вычисленный список файлов)

Обновление 2: https://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh

Orangenhain ответил 14 лет назад
O 608
1

Другая интересная альтернатива - использовать что-то вроде fasd .

Я второй рекомендации для ФАС. С помощью fasd вы можете просто набрать v Sb, и он откроет файл, соответствующий 'Sb', лучше всего в vim, в соответствии с прошедшим временем и частотой редактирования этого файла.

simonair · 13 лет назад · 0
So8res ответил 14 лет назад
S 806