¿Cómo se asignan comandos a las teclas en la Terminal?

10

¿Existe una solución para asignar combinaciones de teclas especiales a palabras en uso terminal? Por ejemplo, el comando less es muy útil y uso un lote para canalizar la salida de otro proceso a través de él.

La idea sería configurar combinaciones de teclas especiales que solo estén activas en el uso del terminal asignado para escribir diferentes comandos. Entonces presionar Ctrl+ Len la ventana de terminal podría escribir

| less

o Ctrl+ Gpodría significar

| grep

Nota: solo quiero decir que agregar las letras a la línea de comandos no ejecuta finalmente. Una forma similar a la finalización de tabulación pero más específica.

NES
fuente

Respuestas:

10

Sí, puedes usar el comando bind

bind '"\ey"':"\"less \C-m\""

Eso asigna Alt-e al comando less y lo ejecuta (con el \ Cm aka Ctrl-m)

Probablemente para el | Necesitas escapar de ella.

bind '"\ey"':"\"\|less \C-m\""

Si solo desea agregarlo a la línea de comando, elimine el * \ Cm \ ""

Tenga cuidado ya que ya hay algunos enlaces definidos:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

La tecla Control, como puede ver arriba, está hecha con Cm, por lo que puede iniciar el comando less con Ctrl-g, de la siguiente manera:

enlazar '"\ Cg"': "\" \ | less * \ Cm \ ""

Para obtener los códigos de tecla para Alt (solo para ALT), puede usar el comando de lectura desde el shell:

@~$ read
^[y

^ [y es igual a \ ey

Para obtener más información, esta pregunta también fue respondida en stackoverflow:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts

tmow
fuente
gracias, ¿cómo puedo eliminar un enlace o mostrar todos los enlaces?
NES
algo está mal con tus primeros 2 ejemplos. siempre imprime también el comodín después de menos después de que le haya asignado su sintaxis de enlace.
NES
bind -p y bind -P le mostrarán todos los enlaces.
Cometí
muchas gracias. ¿quizás tienes una idea de cómo alcanzar la misma meta en peces? Llego muy lejos para que funcione, pero el problema es que fish parece ejecutar automáticamente el comando en lugar de simplemente agregar la cadena a la línea de comandos de forma predeterminada. aquí está la página de manual linux.die.net/man/1/bind Desafortunadamente, el ejemplo no es muy útil para mi caso.
NES
Esta es una función incorporada, creo que fishshell.com/user_doc/index.html#editor está demandando el acceso directo Alt-p
hasta el