¿Cómo recargo .inputrc?

98

Antecedentes

He oído que el módulo readline está leyendo ~/.inputrcy así es como cambia el comportamiento de las pulsaciones de teclas en programas como bash.

Pregunta

¿Cómo puedo volver a cargar esto después de editar para ver el comportamiento cambiado sin reiniciar mi programa de terminal?

Capitán Lepton
fuente
8
Fondo (no está mal) .
Dennis Williamson
3
Vine aquí buscando cómo cargar .inputrc con un comando. superuser.com/q/419670/56544
dfrankow
1
@ CapitánLepton Lo vi. El terminal no es lo mismo que el shell. Hacer exec bashuna sesión de Bash reemplazará la sesión de shell actual con una nueva sesión de Bash. xtermEs una terminal.
Kusalananda
1
@ Kusalananda Gracias por la aclaración. Eso es una buena idea. ¿Quizás describiría ejecutar> exec bash como ejecutar un nuevo shell en el terminal actual en lugar de reiniciar bash, ya que está reemplazando su ejecutable anterior?
Capitán Lepton
1
Sí, no hay forma de "reiniciar" la sesión de shell actual. Esta es una forma de hacerlo. Usar la solución que @maxelost dio es otra.
Kusalananda

Respuestas:

82

Por defecto, C-x C-restá vinculado a re-read-init-file.

Consulte el Manual de referencia de Bash para obtener una explicación.

maxelost
fuente
44
Esto no funciona para mi. Intenté una asignación diferente en el archivo .inputrc y tampoco tuve suerte: "\ eX \ eR": re-read-init-file ¿Alguna sugerencia?
Capitán Lepton
66
@Captain En realidad, lo hace, excepto que no borra las pulsaciones de teclas que se eliminaron mientras tanto. Si, por ejemplo, agrega algunos, se cargan. Su única solución para esto es un nuevo bash -l(shell que se comporta como un shell de inicio de sesión) que se ha inicializado recientemente.
Daniel Beck
Estaba editando /etc/inputrcpero tenía un espacio casi vacío ~/.inputrcque impedía que se /etc/usara el que estaba adentro . Al eliminarlo, ~/.inputrcse leyeron /etc/inputrcy se activaron mis cambios.
Malvineous
1
@Malvineous Me ha sorprendido eso antes ... si agregas $include /etc/inputrca la parte superior ~/.inputrc, evita este problema.
mwfearnley
53

También puede recargar nuevas entradas desde la línea de comandos usando bind -f ~/.inputrc. Eso cargará las entradas en .inputrc. Tenga en cuenta que solo realiza una carga, no una "recarga", por lo que no restablece ninguna línea que haya eliminado del .inputrc.

Para probar rápidamente desde una pizarra limpia, simplemente ejecute y bashluego trabaje dentro de ese nuevo shell anidado (o inicie un nuevo terminal).

studgeek
fuente
Ya veo, corrígeme si me equivoco, eso bind -fsolo acepta realmente un nombre de archivo, y no un archivo, por lo que algo como bind -f <(echo 'one line with ~/.inputrc syntax')(o, trivialmente bind -f <(cat ~/.inputrc)) no funcionará. Esto es un poco molesto. ¿Sabes qué podría hacer a este respecto?
Enrico Maria De Angelis
10

En .inputrc primero elija su enlace y luego enlace la re-read-init-filefunción:

set editing-mode vi
"\C-x\C-r": re-read-init-file

Presione CTRLy x, suelte ambos, presione CTRLy r.

Antonio Bardazzi
fuente