Completar tabulación sin distinción entre mayúsculas y minúsculas en Bash


142

¿Hay alguna manera de hacer que la pestaña Bash complete las mayúsculas y minúsculas?

$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.

Estoy usando Mac OS X 10.6

Respuestas:


170

Actualice el texto /etc/inputrcpara incluir

establecer complete-ignore-case en

Luego use ^X ^Rpara recargar la configuración.


30
"también" - /etc/inputrco ~/.inputrcun archivo designado por INPUTRCson los únicos lugares a los que puede ir. Ingresar eso en un mensaje Bash no funcionará.
— Dennis Williamson el

whoops! tienes razón :)
— John T

10
^X ^Rrecargarinputrc
— grawity

14
@DennisWilliamson: puedes hacerlo bind "set completion-ignore-case on"desde la línea de comandos; para, creo, esa sesión terminal solamente
— Clay Bridges

1
¡Entonces eso es lo que tiene msysgit pero MSYS2 no tiene! Aquí estaba tratando de encontrarlo en, por ejemplo, / etc / profile ...
— SamB

111

Reestructurado con la perspectiva del tiempo para contrastar los pros y los contras de la utilización [.]inputrcvs .bash_profile.
Punta del sombrero para subrayar_d por su ayuda.

Nota: La edición de la línea de comandos en Bash es proporcionada por la biblioteca Readline; personalizarlo no es trivial, pero vale la pena aprenderlo; sus características incluyen la capacidad de definir métodos abreviados de teclado personalizados para insertar fragmentos de texto predefinidos; consulte Edición de línea de comandos en el Manual de referencia de Bash

Para hacer persistente la tabulación completa entre mayúsculas y minúsculas en Bash:


Opción A: si ya tienes:

  • un /etc/inputrcarchivo (se aplica a todo el sistema, requiere modificación sudo)
  • y / o un ~/.inputrcarchivo (específico del usuario)

    y / o

planea personalizar ampliamente la biblioteca de línea de lectura y / o desea que las personalizaciones también sean efectivas para los scripts cuando llaman read -e:

Añadir línea

set completion-ignore-case on

a cualquier archivo, dependiendo de si desea que la configuración sea efectiva para todos los usuarios o el usuario actual (cree el archivo, si es necesario).

Un comando relacionado que facilita la finalización de los nombres de archivo y directorio es:

set show-all-if-ambiguous on

Esto hace innecesario presionar Tab dos veces cuando hay más de una coincidencia.


Opción B: Alternativamente, puede agregar comandos de Readline a su ~/.bash_profilearchivo específico del usuario en OS X (o ~/.bashrcen Linux), pasándolos como un argumento único al bindbuiltin incorporado :

bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"

Tenga binden cuenta que los comandos en ~/.bash_profile/ ~/.bashrctienen prioridad sobre los comandos equivalentes en /etc/inputrco ~/.inputrc.

Como se indicó anteriormente, la configuración de Readline definida de esta manera no tendrá efecto en los scripts que llaman read -ea activar el soporte de Readline para leer la entrada del usuario.


10
¡show-all-if-ambiguous es muy agradable! A menudo me preguntaba por qué me hicieron tabular dos veces para realizar esa acción. miles de pulsaciones de teclas guardadas en mi futuro! ¡Gracias!
— user34112

44
Impresionante, incluso funciona para cdcomandos. Lo que resuelve esta pregunta y también me ahorrará miles de pulsaciones de teclas. :)
— hoosierEE

1
Gran punto re show-all-if-ambiguous. Sin embargo, dado que usted dice "como alternativa", ¿hay realmente algún beneficio al hacer esto a través de bind, cuando los inputrcarchivos parecen hacerlo innecesario?
— underscore_d

1
@underscore_d: Buena pregunta; por favor vea mi respuesta actualizada
— mklement0

1
¡Genial, gracias! En Debian 8.2 no tenía ninguno inputrc, pero felizmente creé ~/.inputrcy agregué estos, además de otras directivas realmente útiles. Supongo que estamos asumiendo que todos los lectores saben que /etc/inputrc afecta a otros usuarios (a menos que este último anule la configuración afectada). Justo cuando estamos mencionando advertencias;)
— underscore_d

1

Para evitar cambiar la configuración de todos los usuarios y evitar los permisos de root, utilice lo siguiente:

if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi
echo 'set completion-ignore-case on' >> ~/.inputrc

Luego vuelva a iniciar sesión o vuelva a cargar ~ / .inputrc

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.