¿Entiendes lo que sucede cuando vuelco una secuencia de caracteres de terminal con Ctrl-v?

¿Entiendes lo que sucede cuando vuelco una secuencia de caracteres de terminal con Ctrl-v?

Si quiero vincular una asignación de teclas a una función o widget en zsh, he aprendido que primero tengo que presionar Ctrl+ v- cuando se me solicite, luego ingresar la secuencia de teclas que quiero usar y luego usar la salida en mi combinación de teclas. dominio.
Entonces, por ejemplo, si quiero asignar la acción de abrir el contenido de la línea de comando actual en un editor, necesitoCtrl+xCtrl+v

  • presione Ctrl+ v- para ingresar al "modo de volcado de clave"
  • golpearCtrl+xCtrl+v
    • En mi caso esto produce^X^E
  • tome ^X^Ey utilícelo en mi comando de combinación de teclas, por ejemplo
bindkey "^X^E" edit-command-line

¿Por qué es necesario y qué sucede realmente "detrás de escena" cuando hago esto?

Respuesta1

Cuando presiona Ctrl- V, el shell comenzará ignorando las interrupciones del teclado y simplemente tomará la combinación de teclas presionada como carácter de entrada. Esto es fácilmente posible ya que ASCII está diseñado para contener todos los caracteres de control.

Por supuesto, en la pantalla tiene que hacer un poco de trampa y mostrar ^seguido de la tecla correspondiente o, de lo contrario, generaría caracteres de control en lugar de lo que necesita ver.

Tenga en cuenta que la bindkeydocumentación muestra que admite dos notaciones para caracteres de control: (los ejemplos se refieren a Ctrl- X)

  • notación de intercalación que consiste en escribir explícitamente el intercalación ( ^) seguido del carácter de control correspondiente textualmente (no es necesario el método Ctrl- Ven esta pregunta); ejemplo:^X
  • C-seguido del carácter de control; ejemplo: C-x. Esto hace que algunas combinaciones de teclas requieran escape (incluso si no lo usa). Probablemente deberías leer todo el screenmanual bindkey.

información relacionada