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
.