Каталоги закладок Zsh с завершением табуляции?

Что я хочу:

cd c/ra<tab> завершает ~/code/rails-app, а cd c/<tab> показывает список каталогов в ~/code


Что у меня есть на данный момент:

c ra<tab> заменяется на c rails-app, если у меня есть каталог ~/code/rails-app, а c <tab> показывает список каталогов в ~/code

Имея это в моем .zshrc:

c() { cd ~/code/$1; }
_c() { _files -W ~/code -/; }
compdef _c c


Этот инструмент выглядит многообещающе: https://github.com/flavio/jump, но мне хотелось бы чего-то большего. легкий.


person Steve McKinney    schedule 17.02.2012    source источник


Ответы (1)


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

Эта ссылка, например, отмечает, что набрав /u/l/b, затем вкладка расширяется до /usr/local/bin в приглашении.

Это работает для меня - если я сделаю каталог ~/code/rails-app таким:

zsh% ls ~/code
another-app       another-dir rails-app
zsh% ls ~/code/rails-app
one two

потом:

zsh% cd c/ra<TAB> # this expands to 'cd code/rails-app'
zsh% cd c/<TAB><TAB> # Double tab, one to expand "c" to "code", 
zsh% #               # second gives me the zsh-completion menu

Я не могу указать, что это за вариант zsh — я использую довольно сильно модифицированный ~/.zshrc и немного oh-my-zsh. Это может быть функциональностью, предоставленной zsh, без необходимости включения; если нет, подробности либо в первой ссылке, либо где-то в oh-my-zsh, либо даже в какой-то версии руководства по ZSH. помощь. (Я нахожу руководство немного... подавляющим, если не сказать больше).

Я не считаю, что вам нужно писать функцию для достижения такого поведения - zsh определенно может это сделать.

person simont    schedule 16.05.2012
comment
Я остановился на использовании fasd github.com/clvv/fasd, что является другим способом решения моей проблемы. Но спасибо, у вашего точного автозаполнения Zsh есть большинство функций, которые я запрашивал. - person Steve McKinney; 17.05.2012