Zsh эквивалент bash показать все, если неоднозначно?

8

В bash, если вы нажмете клавишу Tab, когда есть несколько возможных завершений, вы получите список совпадений, который будет повторяться при повторном нажатии клавиши Tab. В tcsh установка автозаполнения для улучшенного также достигает этого.

В zsh вы получаете список совпадений, но при нажатии на 2-ю, 3-ю вкладку начинается циклический просмотр матчей. Есть ли способ заставить zsh сделать то же самое, что и в bash, показать все-если-неоднозначно без циклирования?

Я не ищу умного, но бесполезного «зачем нажимать клавишу табуляции несколько раз, если она отображается после первой?». Если бы я смог скорректировать свои привычки, я бы уже сделал это.

Шридхар Сарнобат
источник

Ответы:

5

У Zsh есть много опций, связанных с завершением (см. man zshoptionsНиже Completion). Я думаю, что вы после setopt no_auto_menuи, возможно, setopt bash_auto_listтакже.

Жиль "ТАК - перестань быть злым"
источник
Извините, я плохо сформулировал свой вопрос. Я хочу знать, как отключить цикл завершения вкладки. Я думаю, что я начну новый вопрос.
3
@ user714112: setopt no_auto_menuотключает циклическое завершение табуляции: если вы нажмете Tabи текущий префикс будет неоднозначным, вы увидите меню, и все, командная строка не изменится.
Жиль "ТАК - перестать быть злым"
Спасибо, вы правы. Я не уверен, почему я не видел этого раньше. Можно ли заставить его заново отобразить список на 2-й, 3-й, 4-й вкладке вместо ничего? Человеческий инстинкт - думать, что ваша клавиатура не работает, если ничего не происходит при нажатии клавиш на 2-й, 3-й, 4-й вкладках.
Шридхар Сарнобат
@ user7000: Опять же, он отображает список каждый раз, когда вы нажимаете Tab. Если я очищаю экран из меню эмулятора терминала или создаю файл, а затем Tabснова нажимаю, zsh снова отображает список и показывает новый файл. (Только что протестировано с zsh 4.3.4, и я не думаю, что поведение изменилось за долгое время.)
Жиль "ТАК - перестать быть злым"
1
Я наконец получил решение. Мне нужно было 2 варианта плюс удаление ALWAYS_LAST_PROMPT. Так что это дает мне неуловимое поведение, которое я хотел: setopt bash_auto_list; setopt no_auto_menu; отменить выбор ALWAYS_LAST_PROMPT; Еще раз спасибо за помощь в этом. Я ценю вашу настойчивость
Шридхар Сарнобат