Я недавно перешел с bash на zsh (с которым я использую "oh my zsh"), но меня раздражает одна вещь:
Когда я нажимаю клавишу табуляции, первое автозаполнение заполняется автоматически, и вам нужно циклически перебирать завершения, повторно нажимая табуляцию.
Это отличается от bash, где вам просто показан список завершенных. Если все дополнения имеют один и тот же префикс, то этот префикс заполняется. Вы можете выбрать тот, который хотите, продолжая печатать.
Я считаю последнее предпочтительным, так как его быстрее набирать, чем выбирать завершение, повторно нажимая вкладку.
Есть ли способ сделать так, чтобы завершение zsh больше походило на bash в этом отношении?
setopt noautomenu
setopt nomenucomplete
Вам нужны они оба. Если вы нажмете вкладку достаточно раз, вы получите список завершений, но он никогда не добавит никаких символов к тому, что вы набрали до сих пор.
Я не думаю, что это поведение по умолчанию, но вы можете отключить его, используя:
setopt +o menucomplete
Другие параметры, которые по-разному влияют на это поведение, включают: autolist
, automenu
, bashautolist
, listambiguous
. См. Раздел «Завершение» man zshoptions
для подробностей. Вы можете добавить эту команду в свой ~/.zshrc
файл.
Вы можете настроить многие другие вещи в интерактивном режиме, выполнив:
autoload -U compinstall
compinstall
и следуя подсказкам и меню.
В Bash это поведение контролируется привязкой Вкладка к complete
или menu-complete
в ~/.inputrc
:
"\C-i": complete # do list completion
либо из командной строки, либо в ~/.bashrc
:
bind '"\C-i": menu-complete' # do menu completion