GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo cambio la finalización del historial de bash para completar lo que ya está en línea?

Probablemente algo como

# ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward

o equivalente,

# ~/.bashrc
if [[ $- == *i* ]]
then
    bind '"\e[A": history-search-backward'
    bind '"\e[B": history-search-forward'
fi

(la instrucción if verifica el modo interactivo)

Normalmente, Arriba y Abajo están vinculados a las funciones de Readline previous-history y next-history respectivamente. Prefiero vincular PgUp/PgDn a estas funciones, en lugar de desplazar la operación normal de Up/Down.

# ~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward

Después de modificar ~/.inputrc , reinicie su shell o use Ctrl +X , Ctrl +R para decirle que vuelva a leer ~/.inputrc .

Por cierto, si está buscando documentación relevante:

Bash usa The GNU Readline Library para el historial y el aviso de shell.


Actualice .inputrc con lo siguiente:

"\C-[OA": history-search-backward
"\C-[[A": history-search-backward

"\C-[OB": history-search-forward
"\C-[[B": history-search-forward

Si set enable-keypad on está en tu ~/.inputrc como algunos usuarios de st (terminal simple sin succión), tenga en cuenta que las teclas de flechas están en modo de teclado. Ubuntu viene con este útil /usr/share/doc/bash/inputrc.arrows :

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

Así que no estoy seguro de si necesitarás todo, pero puede que no esté de más tenerlo en tu ~/.inputrc :

# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char

# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char

Esto también es sobre el mismo tema:Mis teclas de cursor no funcionan y también este xterm:teclas especiales


Linux
  1. Cómo borrar el historial de línea de comandos BASH en Linux

  2. ¿Cómo cambiar la longitud de línea predeterminada para Od y Hexdump?

  3. Cómo cambiar la cantidad de comandos almacenados en Bash History

  4. Cómo cambiar el nombre de host en Ubuntu

  5. ¿Cuál es el uso de $# en Bash?

Consejos de Bash para el día a día en la línea de comandos

Cómo comentar en Bash

Cómo leer un archivo línea por línea en Bash

Cómo mostrar el historial de Bash sin números de línea

¿Cómo cambiar rápidamente la primera palabra en un comando Bash?

¿Cómo encuentro el número de línea en Bash cuando ocurre un error?