Readline (Español)
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.
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 .
Diferentes formas de cursor para cada modo
Puede configurar una forma de cursor diferente para cada modo utilizando "\1 .. \2" escapes:
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:
Véase Cursor software para VGA para mas detalles.
Movimiento rápido entre palabras
Xterm permite moverse entre palabras con y Control+Derecha
de forma predeterminada. Para lograr este efecto con otros emuladores de terminal, encuentre los códigos de terminal correctos , y conéctelos a backward-word
y en ~/.inputrc
.
Por ejemplo, para urxvt:
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:
En esta situación, al escribir y presionar la tecla de flecha hacia arriba, la entrada actual se reemplazará con , la última orden ejecutada. Si se ha habilitado la búsqueda de historial, solo se mostrarán las órdenes anteriores que comiencen con (la entrada actual), en este caso .
Puede habilitar el modo de búsqueda de historial añadiendo las siguientes líneas a o :
"\e[A": history-search-backward "\e[B": history-search-forward
Si está utilizando el modo vi, puede añadir las siguientes líneas a (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 , 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 (abortar) se cancelará la búsqueda y se restaurará la línea de entrada actual. Entonces, para buscar en todos las órdenes 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 de forma predeterminada. Tenga en cuenta que la mayoría de los terminales anulan para suspender la ejecución hasta que se presione . (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 . Por ejemplo, para utilizar 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:
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:
Colores en el completado
Puede habilitar el coloreado del completado de los nombres de archivo con la opción . También puede colorear el prefijo idéntico de las listas de completado con colored-completed-prefix
. Por ejemplo:
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 (final de línea), añadido con ''.
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 añada "| less" a la línea y la ejecute ( es equivalente a ):
"\e\C-l": "\C-e | less\C-m"
El siguiente prefija la línea con 'yes |' al presionar , 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 , si se presiona :
"\es": "\C-a su -c '\C-e'\C-m"
Este ejemplo prefija la línea con , si se presiona . Es más seguro porque no introduce la tecla .
"\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 después de presionar Control+C
. Para los usuarios que deseen deshabilitar esto, simplemente añada lo siguiente a :
set echo-control-characters off