¿Cómo hago que la finalización de zsh actúe más como la finalización de bash?

17

Soy un converso reciente de bash a zsh (con el que estoy usando "oh my zsh"), pero una cosa me molesta:

Cuando presiono la tecla de tabulación, el primer autocompletado se completa automáticamente, y debe recorrer las terminaciones presionando la pestaña repetidamente.

Esto difiere de bash, donde solo se le muestra una lista de las finalizaciones. Si todas las terminaciones tienen el mismo prefijo, entonces este prefijo se completa. Puede seleccionar el que desee si continúa escribiendo.

Creo que es preferible este último ya que es más rápido escribir, que seleccionar una finalización presionando la pestaña repetidamente.

¿Hay alguna manera de hacer que la finalización de zsh actúe más como bash en este sentido?

cordura
fuente

Respuestas:

18
setopt noautomenu
setopt nomenucomplete

Los necesitas a ambos. Si presiona la pestaña suficientes veces, obtendrá la lista de finalizaciones, pero nunca agregará ningún carácter a lo que ha escrito hasta ahora.

Eyal
fuente
3

No creo que ese sea el comportamiento predeterminado, pero puede desactivarlo usando:

setopt +o menucomplete

Otros ajustes que afectan a este comportamiento de diferentes maneras incluyen: autolist, automenu, bashautolist, listambiguous. Consulte la sección "Finalización" de man zshoptionspara más detalles. Puede agregar este comando a su ~/.zshrcarchivo.

Puede configurar muchas otras cosas interactivamente haciendo:

autoload -U compinstall
compinstall

y siguiendo las indicaciones y menús.

En Bash, este comportamiento se controla mediante la unión Taba complete, o menu-completeen ~/.inputrc:

"\C-i": complete   # do list completion

o desde un indicador de shell o en ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion
Pausado hasta nuevo aviso.
fuente
1
meta comentario: ¿cómo conseguiste que el carácter de "tabulación" se viera así?
Buena persona
2
@ Buena persona:<kbd>Tab</kbd>
pausa hasta nuevo aviso.