texto script para mcedit linea consola comandos archivos bash shell vim

bash - script - editor de texto yum



¿Cómo puedo hacer que la finalización de la pestaña bash se comporte como la finalización de la pestaña vim y recorrer las coincidencias coincidentes? (5)

En mi experiencia, la solución provista en la respuesta sth nunca funcionó completamente para mí. TL; DR : agregue el set -o vi a su ~/.bashrc .

Al usar menu-complete junto con las combinaciones de teclas vi, tengo que asegurarme de que

set -o vi

aparece en algún lugar de mi ~/.bashrc . Nunca ha sido suficiente para mí solo tener

TAB: menu-complete set editing-mode vi set keymap vi

en mi ~/.inputrc .

Mi suposición es que de alguna manera set editing-mode modo de set editing-mode y set keymap teclas están destruyendo la configuración TAB: ... , pero no he revisado la documentación a fondo para descubrir por qué este es el caso.

He querido encontrar una solución para esto durante AÑOS.

Soy mucho más productivo en vim cuando manipulo archivos que bash por este motivo.

Si tengo

file_12390983421 file_12391983421 file_12340983421 file_12390986421

En bash y escriba file_1-> tab, obviamente lista:

file_12390983421 file_12391983421 file_12340983421 file_12390986421

Y este es un agujero horrible y doloroso para trabajar.

La misma secuencia en vim recorrerá los archivos de a uno por vez.

Por favor, alguien me diga cómo hacer esto en bash, o si hay otro caparazón que puede hacer esto, cambiaré mañana.


Encima de

# cycle forward Control-k: menu-complete # cycle backward Control-j: menu-complete-backward

también puedes considerar agregar

# display one column with matches set completion-display-width 1

De esta forma, conservaría la funcionalidad de la pestaña actual y haría que bash muestre las posibilidades en una columna. Entonces, en lugar de

file_12340983421 file_12390983421 file_12390986421 file_12391983421

obtendrías

file_12340983421 file_12390983421 file_12390986421 file_12391983421

PD: puede obtener una biblioteca readline actualizada de este sitio web de The GNU Readline Library .


Gracias a @sth, encontré lo que funciona mejor para mí:

Para mantener la finalización normal de la pestaña bash, y luego use ctl-f para pasar cuando sea necesario usando el menú-completo

pon esto en tu archivo .inputrc:

"/C-f": menu-complete


Para bash> = 4 puede que le gusten estas configuraciones:

# If there are multiple matches for completion, Tab should cycle through them bind ''TAB'':menu-complete # Display a list of the matching files bind "set show-all-if-ambiguous on" # Perform partial completion on the first Tab press, # only start cycling full results on the second Tab press bind "set menu-complete-display-prefix on"

Esta configuración es similar al set wildmode=longest:full:list,full de Vim set wildmode=longest:full:list,full

Saqué esta configuración de esta pregunta en el sitio de Unix & Linux.


Por defecto, TAB está vinculado al comando readline complete . Su comportamiento deseado sería menu-complete lugar. Puede cambiar la configuración de sus ~/.inputrc editando ~/.inputrc . Para volver a asociar TAB , agregue esta línea:

TAB: menu-complete

Para más detalles, vea la sección de READLINE en man bash .