tweaks aurman shell autocomplete zsh zsh-completion

shell - aurman - zsh tweaks



cd-1,-2,-3 etc en el shell Z (2)

Si usa pushd lugar de cd , puede listar los directorios con dirs y cd al directorio antiguo con popd . También puede configurar la opción de autopush para que el cd comporte como pushd -q . Aquí hay un ejemplo:

setopt pushdsilent # Omit printing directory stack setopt autopush # Make cd push directories onto stack setopt pushdminus # Invert meanings of +N and -N arguments to pushd mkdir -p 1/2/3/4 cd 1 cd 2 cd 3 cd 4 popd # Go to previous directory (3) and remove it from directory stack pushd - # Go to previous directory (4) pushd -2 # Go 2 directories back the directory stack (2)

Tenga en cuenta que pushd no elimina nada de la pila de directorios, solo lo gira. Ver man zshbuiltins para más detalles.

¿Cómo configura el shell Z de modo que al escribir cd? Le proporcione una lista de las rutas visitadas anteriormente, y cd -1, -2, -3, etc. lo llevará a los directorios?


Si ha setopt AUTO_PUSHD en su .zshrc entonces cd automáticamente hará un pushd de cada directorio al que cambie. Tomando el ejemplo de ZyX:

$ setopt AUTO_PUSHD $ mkdir -p 1/2/3/4 $ cd 1 $ cd 2 $ cd 3 $ cd 4

Puedes ver una lista de los directorios usando dirs :

$ dirs -v 0 ~/1/2/3/4 1 ~/1/2/3 2 ~/1/2 3 ~/1 4 ~

Para poder completar la lista con tabulación, puede usar los argumentos + y - con cd ( <TAB> significa que presionó la tecla de tabulación):

$ cd +<TAB> 1 -- ~/1/2/3 2 -- ~/1/2 3 -- ~/1 4 -- ~

O al revés:

$ cd -<TAB> 0 -- ~ 1 -- ~/1 2 -- ~/1/2 3 -- ~/1/2/3

Luego simplemente selecciona el número para ir a ese directorio:

$ cd +2 $ pwd ~/1/2

Tabula directorios completos

Siempre olvido la secuencia mágica para hacer lo siguiente, así que actualicé la respuesta para explicar esta parte.

El + y - solo lo llevarán al directorio, no puede completar la ruta en la pila (es decir, cd -2/<TAB> no le da nada). Para que esto funcione, puedes usar una tilde ( ~ ).

Haz algunos directorios en 3 para mejorar este ejemplo.

$ mkdir 3/foo 3/bar 3/baz

Luego encuentra el directorio en la pila.

$ cd ~+<TAB> 1 -- ~/1/2/3/4 2 -- ~/1/2/3 3 -- ~/1 4 -- ~

A continuación, utilice la tabulación en una entrada.

$ cd ~+2/<TAB> 4/ bar/ baz/ foo/