Readline (Español)

Esta traducción de
Readline
fue revisada el
2022-11-04
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Readline
es una biblioteca del
Proyecto GNU
, utilizada por
Bash
y otros programas con interfaz CLI para editar e interactuar con la línea de órdenes. Véase
readline(3)
para más información.
Instalación
Es probable que el paquete
readline
ya esté instalado como una dependencia de
Bash
.
Modo de edición
De manera predeterminada, Readline utiliza los atajos de estilo
Emacs
para interactuar con la línea de órdenes. Sin embargo, la interfaz de edición de estilo
vi
también están soportados añadiendo lo siguiente a
~/.inputrc
:
~/.inputrc
set editing-mode vi
Alternativamente, para configurarlo solo para
Bash
, añada la siguiente línea a
~/.bashrc
:
~/.bashrc
set -o vi
Indicador de modo en el prompt
La edición de estilo vi tiene dos modos: comando e insertar. Puede visualizar cuál está activo actualmente añadiendo la siguiente opción:
~/.inputrc
set show-mode-in-prompt on
Esto imprimirá una cadena en su prompt (
(cmd)
/
(ins)
por defecto) que se puede personalizar con las variables
vi-ins-mode-string
y
vi-cmd-mode-string
.
Diferentes formas de cursor para cada modo
Puede configurar una forma de cursor diferente para cada modo utilizando
"\1 .. \2" escapes
:
~/.inputrc
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
Esto establecerá un cursor en forma de bloque cuando esté en el modo de comando y un cursor de tubería cuando esté en el modo de inserción. Tenga en cuenta que debe tener activado el indicador de modo para que esto funcione (véase
#Indicador de modo en el prompt
.
La consola virtual utiliza diferentes códigos de escape, por lo que antes debe verificar qué terminal se está utilizando:
~/.inputrc
$if term=linux
	set vi-ins-mode-string \1\e[?0c\2
	set vi-cmd-mode-string \1\e[?8c\2
$else
	set vi-ins-mode-string \1\e[6 q\2
	set vi-cmd-mode-string \1\e[2 q\2
$endif
Véase
Cursor software para VGA
para mas detalles.
Movimiento rápido entre palabras
Xterm
permite moverse entre palabras con
Control+Izquierda
y
Control+Derecha
de forma predeterminada
. Para lograr este efecto con otros emuladores de terminal, encuentre los códigos de terminal correctos
[1]
[
enlace roto
2025-08-16]
, y conéctelos a
backward-word
y
forward-word
en
~/.inputrc
.
Por ejemplo, para
urxvt
:
~/.inputrc
"\e[1;5D": backward-word
"\e[1;5C": forward-word
Historial
Por lo general, presionar la tecla de flecha hacia arriba hará que se muestre la última orden, independientemente de la orden que se haya escrito hasta el momento. Sin embargo, a los usuarios les puede resultar más práctico listar solo las órdenes anteriores ​​que coincidan con la entrada actual.
Por ejemplo, si el usuario ha escrito las siguientes órdenes:
ls /usr/src/linux-2.6.15-ARCH/kernel/power/Kconfig
who
mount
man mount
En esta situación, al escribir
ls
y presionar la tecla de flecha hacia arriba, la entrada actual se reemplazará con
man mount
, la última orden ejecutada. Si se ha habilitado la búsqueda de historial, solo se mostrarán las órdenes anteriores que comiencen con
ls
(la entrada actual), en este caso
ls /usr/src/linux-2.6.15-ARCH/kernel/power/Kconfig
.
Puede habilitar el modo de búsqueda de historial añadiendo las siguientes líneas a
/etc/inputrc
o
~/.inputrc
:
"\e[A": history-search-backward
"\e[B": history-search-forward
Si está utilizando el modo vi, puede añadir las siguientes líneas a
~/.inputrc
(de
esta publicación
):
set editing-mode vi
$if mode=vi
set keymap vi-command
# estos son para el modo de órdenes vi
"\e[A": history-search-backward
"\e[B": history-search-forward
j: history-search-forward
k: history-search-backward
set keymap vi-insert
# estos son para el modo de inserción vi
"\e[A": history-search-backward
"\e[B": history-search-forward
$endif
Si eligió añadir estas líneas a
~/.inputrc
, se recomienda que también añada la siguiente línea al principio de este archivo para evitar cosas extrañas como
esta
:
$include /etc/inputrc
Alternativamente, se puede utilizar el historial de búsqueda inversa (búsqueda incremental) presionando
Control+R
, que no busca en base a la entrada anterior, sino que salta hacia atrás en el búfer del historial a medida que se escriben las órdenes en la búsqueda de términos. Al presionar nuevamente
Control+R
durante este modo, se mostrará la línea anterior en el búfer que coincide con el término de búsqueda actual, mientras que al presionar
Control+G
(abortar) se cancelará la búsqueda y se restaurará la línea de entrada actual. Entonces, para buscar en todos las órdenes
mount
anteriores, presione
Control+R
, escriba 'mount' y siga presionando
Control+R
hasta que se encuentre la línea deseada.
El equivalente directo de este modo se denomina historial de búsqueda avanzada y está vinculado a
Control+S
de forma predeterminada. Tenga en cuenta que la mayoría de los terminales anulan
Control+S
para suspender la ejecución hasta que se presione
Control+Q
. (A esto se le llama control de flujo XON/XOFF). Para activar el historial de búsqueda avanzada, deshabilite el control de flujo de esta forma:
$ stty -ixon
o utilice una tecla diferente en
inputrc
. Por ejemplo, para utilizar
Alt+S
que no está enlazado por defecto:
"\es": forward-search-history
Completado más rápido
Al realizar el completado mediante tabulador, una sola pulsación intenta completar parcialmente la palabra actual. Si no son posibles los completados parciales, una doble pulsación muestra todas los completados posibles.
La doble pulsación de tabulador se puede cambiar a una sola pulsación con la configuración siguiente:
~/.inputrc
set show-all-if-unmodified on
O puede configurarlo de modo que una sola pulsación de tabulador realice ambos pasos: que complete parcialmente la palabra
y
que muestre todas los completados posibles si aún es ambigua:
~/.inputrc
set show-all-if-ambiguous on
Colores en el completado
Puede habilitar el coloreado del completado de los nombres de archivo con la opción
colored-stats
. También puede colorear el prefijo idéntico de las listas de completado con
colored-completed-prefix
. Por ejemplo:
~/.inputrc
# Archivos de color por tipos
# Tenga en cuenta que esto puede hacer que el texto de finalización parpadee en algunos terminales (p.e. xterm)
set colored-stats On
# Añadir un carácter para indicar el tipo
set visible-stats On
# Marcar directorios enlazados
set mark-symlinked-directories On
# Colorea el prefijo común
set colored-completion-prefix On
# Colorea el prefijo común en completado por menú
set menu-complete-display-prefix On
Macros
Readline también admite teclas enlazadas para macros de teclado. Para un ejemplo simple, ejecute esta orden en Bash:
bind '"\ew": "\C-e # macro"'
o añada la parte entre comillas simples a inputrc:
"\ew": "\C-e # macro"
Ahora escriba una línea y presione
Alt+W
. Readline actuará como si se hubiera presionado
Control+E
(final de línea), añadido con '
# macro
'.
Utilice cualquiera de las combinaciones de teclas existentes dentro de una macro de readline, lo que puede ser bastante útil para automatizar los términos de uso frecuente. Por ejemplo, este hace que
Control+Alt+L
añada "| less" a la línea y la ejecute (
Control+M
es equivalente a
Intro
):
"\e\C-l": "\C-e | less\C-m"
El siguiente prefija la línea con 'yes |' al presionar
Control+Alt+Y
, confirmando cualquier pregunta de sí/no que la orden pudiera preguntar:
"\e\C-y": "\C-ayes | \C-m"
Este ejemplo ajusta la línea en
su -c ''
, si se presiona
Alt+S
:
"\es": "\C-a su -c '\C-e'\C-m"
Este ejemplo prefija la línea con
sudo
, si se presiona
Alt+S
. Es más seguro porque no introduce la tecla
Intro
.
"\es": "\C-asudo \C-e"
Como último ejemplo, envíe rápidamente una orden en segundo plano con
Control+Alt+B
, descartando toda su salida:
"\e\C-b": "\C-e > /dev/null 2>&1 &\C-m"
Desactivando el control de eco
Readline hace que el terminal se haga eco de
^C
después de presionar
Control+C
. Para los usuarios que deseen deshabilitar esto, simplemente añada lo siguiente a
~/.inputrc
:
set echo-control-characters off
Véase también
Hoja de trucos de edición de vi readline
Hoja de trucos de edición de emacs readline