¿Cómo puedo hacer que la finalización de zsh se comporte como la finalización de Bash?


12

Cambié a zsh, pero no me gusta la finalización. Si tengo 20 archivos, cada uno con un prefijo compartido, al presionar tab, zsh completará completamente el primer archivo, luego continuará revisando la lista cada vez que presione tab. Si quiero uno cerca del final, tendría que presionar tab muchas veces.

En bash, esto era simple: presione tab y obtendría el prefijo. Si continuaba escribiendo (y presionando tab), bash se completaría en la medida de lo posible. Creo que este comportamiento es mucho más intuitivo, pero prefiero las otras características de zsh a bash.

¿Hay alguna manera de obtener este estilo de finalización? Google sugirió setopt bash_autolist, pero esto no tuvo ningún efecto para mí (y no se imprimió ningún mensaje de error al iniciar mi shell).

Gracias.

Respuestas:


7

Tratar:

setopt autolist
unsetopt menucomplete

Funciona bastante bien, no es exactamente lo mismo, pero definitivamente es algo a lo que me puedo acostumbrar. ¡Muchas gracias!
nsm

8

Lo que quieres es probablemente esto:

setopt noautomenu

1
(10 años después) La respuesta aceptada no tuvo ningún efecto (aparente) para mí. Esto era exactamente lo que quería y parece que el OP estaba pidiendo.
Jer

1

Hay otra opción si usa la opción "selección de menú" en .zshrc como esta:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Podrá navegar por el resultado con las teclas de flecha. Tomemos su ejemplo con "20 archivos con un prefijo compartido":

  • Al presionar [TAB] por primera vez, zsh completará lo más que pueda y luego mostrará una lista de posibilidades
  • entonces puede completar como lo haría en bash (escriba un carácter adicional, vaya a 0)
  • o vuelva a escribir [TAB] y luego verá las posibles opciones resaltadas en el menú debajo de su indicador de shell; bono, puedes navegar en las posibilidades con las teclas de flecha

Al final para llegar a la última posibilidad:

  • con Bash, en el mejor de los casos, presionas [TAB] luego un carácter adicional y luego [TAB] nuevamente (quizás más)
  • con Zsh, presionas [TAB] luego [TAB] nuevamente (para ingresar al menú), luego "<-" (tecla de flecha izquierda) para llegar a los últimos elementos

Ambos son 3 golpes de tecla en este mismo caso. El resto es principalmente una cuestión de gustos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.