Я давно пользуюсь tcsh, но все крутые ребята в наше время, похоже, используют либо bash, либо zsh (то есть шаблоны завершения для git или что-то еще доступны для bash и zsh, редко для tcsh).
Моя проблема в том, что в обеих оболочках есть поведения, связанные с завершением пути путями, которые сводят меня с ума, и у меня много проблем с поиском, как изменить их по своему вкусу.
Вот пара примеров того, что я привык делать в tcsh, что другие делают по-другому:
/u<TAB>
завершается до/usr/
- Затем вкладка перечисляет содержимое
/usr/
/usr/li<TAB>
завершает работу с/usr/lib
и перечисляетlib/
иlibexec/
- Повторное нажатие клавиши tab завершает работу с
/usr/lib/
- При третьем нажатии на вкладку выводится содержимое
/usr/lib/
В bash, независимо от того, сколько раз я нажимаю на tab, он никогда не пройдет мимо /usr/lib
, что потребует от меня ввода косой черты, чего я не хочу делать.
В zsh /usr/li<TAB>
сначала завершается в /usr/lib
, затем в другой вкладке перечисляются lib/
и libexec/
, третья вкладка завершается в /usr/lib/
, а все последующие вкладки переключаются между /usr/lib/
и /usr/libexec/
. Я понятия не имею, как пройти этот пункт. Я просто хочу перейти из /usr/li
в /usr/lib
, затем /usr/lib/
, а затем перечислить его содержимое.
То же самое касается питона. В tcsh я pyt<TAB>
, он завершается до python
и перечисляет python
, python2.5
, python2.6
и т.д., А затем вторая вкладка устанавливает для python и добавляет пробел. В bash требуется, чтобы я напечатал пробел, а в zsh он бесконечно циклически повторяется, как в первом примере.
Любая помощь в укрощении этих оболочек будет принята с благодарностью. Я не хочу тратить время на настройку других аспектов этих оболочек, пока не решу проблему, описанную выше.