stringtranslate.com

Pegar entre corchetes

El pegado entre corchetes (a veces denominado pegado entre corchetes [1] ) es un modo de algunos emuladores de terminal que permite que los programas que se ejecutan en la terminal traten el texto pegado de forma diferente al texto escrito normalmente.

Historia

La función de pegar entre corchetes fue introducida por xterm en 2002, como un cambio aportado por un usuario para mejorar la interacción con Emacs . Más tarde, en 2005, otro usuario documentó esto como parte de otra función de selección/pegado para el editor JOE . [2] A lo largo de varios años, otros desarrolladores adaptaron la función para emuladores y editores de terminal que funcionan con esta función. [3]

Motivación

La técnica de pegar entre corchetes se utiliza para resolver el siguiente problema, que se produce con frecuencia al editar código en un editor de texto de terminal (como Vim o Emacs ). Estos editores de texto suelen incluir la función de sangría automática , que hace que la sangría se agregue automáticamente cuando el usuario presiona la tecla Intro al final de una línea. Por ejemplo, supongamos que estamos editando el siguiente bloque de código en un editor de texto, con la posición del cursor marcada por el |carácter.

def  f ():  imprimir ( 'foo' ) |

Si el usuario presiona Enter, los editores de texto a menudo avanzarán el cursor a la ubicación marcada en el siguiente bloque de código.

def  f ():  imprimir ( 'foo' )  |

Esto puede tener consecuencias no deseadas al pegar código que ya está formateado. Por ejemplo, supongamos que el usuario desea copiar el siguiente bloque de código en un archivo.

def  g ():  print ( 'hola' )  print ( 'mundo' )

En un flujo de trabajo típico, el usuario comienza seleccionando el bloque de código y copiándolo en el portapapeles de su sistema . Luego, selecciona la ubicación de destino en su archivo y emite un comando de pegar. El emulador de terminal envía entonces los caracteres del portapapeles al editor de texto, y el editor de texto puede no ser capaz de diferenciar entre, por ejemplo, un dcarácter que proviene del portapapeles y uno que proviene del usuario al presionar la tecla D en su teclado. Las nuevas líneas en el bloque de código se tratan de la misma manera que si el usuario presionara la tecla Intro. Por lo tanto, cuando la nueva línea al final de la primera línea se envía al editor de texto, si la sangría automática está habilitada, el editor de texto insertará una sangría (varios espacios o un carácter de tabulación ). A continuación, el emulador de terminal transmitirá los caracteres de espacio correspondientes a los espacios al comienzo de la segunda línea del bloque de código en el portapapeles, lo que da como resultado una sangría doble. Además, en este contexto, el comportamiento típico de la sangría automática sería igualar el nivel de sangría de la segunda línea al iniciar la tercera, lo que daría como resultado que la tercera línea tuviera una sangría triple. El resultado final podría ser similar al siguiente.

def  g ():  print ( 'hola' )  print ( 'mundo' )

Descripción de pasta entre corchetes

Los emuladores de terminal (como xterm [4] e iTerm2 [5] ) permiten que los programas configuren el comportamiento de los emuladores de terminal a través de códigos de escape o secuencias de control .

La forma habitual de hacerlo es que un programa de usuario imprime una secuencia de control en la salida estándar y el emulador de terminal lee la salida estándar, detecta la secuencia de control y reacciona según corresponda. En particular, los emuladores de terminal pueden proporcionar secuencias de control que activan y desactivan el pegado entre corchetes. Un editor de texto puede enviar la secuencia de control para activar el pegado entre corchetes al inicio o en respuesta a un comando de usuario.

A partir de entonces, los caracteres que el usuario escriba normalmente se reenviarán al editor de texto mediante el emulador de terminal de la misma manera. Sin embargo, si el usuario emite un comando de pegar en el emulador de terminal, este insertará secuencias de control especiales al principio y al final del texto pegado (enmarcará el contenido pegado) para permitir que el editor de texto trate esa entrada de forma diferente (por ejemplo, para desactivar la sangría automática temporalmente).

Cada implementación utiliza las secuencias de control documentadas en las secuencias de control de xterm:

Referencias

  1. ^ Nachman, George (15 de abril de 2018). "Pegar corchetes". Wiki de iTerm2 . Consultado el 13 de febrero de 2022 .
  2. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2005). "Secuencias de control de Xterm". Proyecto XFree86 . Consultado el 13 de febrero de 2022 .
  3. ^ Dickey, Thomas E. (2022). «XTerm – pegado entre corchetes». invisible-island.net . Consultado el 13 de marzo de 2022 .
  4. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2022). "Secuencias de control de XTerm". invisible-island.net . Modo de pegado entre corchetes . Consultado el 13 de marzo de 2022 .
  5. ^ "Códigos de escape propietarios - Documentación - iTerm2 - Reemplazo de terminal macOS". iterm2.com . Consultado el 13 de febrero de 2022 .