El pegado entre corchetes (a veces denominado pegado entre corchetes [ 1 ] ) es un modo de algunos emuladores de terminal que permite a los programas que se ejecutan en la terminal tratar el texto pegado de manera diferente al texto escrito normalmente.
Historia
La función de pegado entre corchetes fue introducida por xterm en 2002, como un cambio aportado por un usuario para mejorar la interacción con Emacs . Posteriormente, en 2005, otro usuario la documentó 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 de terminal y editores que trabajan con esta función. [ 3 ]
Motivación
El pegado entre corchetes se utiliza para resolver el siguiente problema, que se encuentra comúnmente al editar código en un editor de texto de terminal (como Vim o Emacs ). Estos editores de texto a menudo incluyen la función de autoindentación , que hace que la indentación se agregue automáticamente cuando el usuario presiona la tecla Enter 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 (): print ( 'foo' ) |Si el usuario pulsa la tecla Intro, los editores de texto suelen avanzar el cursor hasta la ubicación marcada en el siguiente bloque de código.
def f (): print ( 'foo' ) |Esto puede tener consecuencias no deseadas al pegar código que ya está formateado. Por ejemplo, supongamos que el usuario pretende 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 al portapapeles del sistema . Luego, selecciona la ubicación de destino en su archivo y ejecuta el comando de pegar. El emulador de terminal envía entonces los caracteres del portapapeles al editor de texto, y este último puede no ser capaz de diferenciar, por ejemplo, entre un dcarácter que proviene del portapapeles y uno que proviene de la tecla D del teclado del usuario. Los saltos de línea en el bloque de código se tratan de la misma manera que si el usuario pulsara la tecla Intro. Por lo tanto, cuando se envía al editor de texto el salto de línea al final de la primera línea, si la indentación automática está habilitada, el editor de texto insertará una indentación (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 principio de la segunda línea del bloque de código en el portapapeles, lo que resulta en una doble indentación. Además, en este contexto, el comportamiento típico de autoindentación sería igualar el nivel de indentación de la segunda línea al comenzar la tercera, lo que resultaría en una triple indentación para la tercera línea. El resultado final podría verse como el siguiente.
def g (): print ( 'hola' ) print ( 'mundo' )Descripción de la 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 mediante códigos de escape o secuencias de control .
Lo habitual es que un programa de usuario imprima una secuencia de control en la salida estándar , y el emulador de terminal lea dicha salida, detecte la secuencia de control y reaccione según corresponda. En concreto, los emuladores de terminal pueden proporcionar secuencias de control para activar y desactivar el pegado entre corchetes. Un editor de texto puede enviar la secuencia de control para activar el pegado entre corchetes al iniciarse o en respuesta a un comando del usuario.
Posteriormente, los caracteres que el usuario escriba serán enviados al editor de texto de forma habitual por el emulador de terminal. Sin embargo, si el usuario introduce un comando de pegado en el emulador de terminal, este insertará secuencias de control especiales al principio y al final del texto pegado (entrecomillará el contenido), lo que permitirá al editor de texto procesar esa entrada de forma diferente (por ejemplo, desactivar temporalmente la indentación automática).
Cada implementación utiliza las secuencias de control documentadas en las secuencias de control de xterm:
ESC [ ? 2004 hpara activar la pasta entre corchetesESC [ ? 2004 lpara desactivar la pasta entre corchetesESC [ 200 ~para indicar el comienzo del texto pegado yESC [ 201 ~para significar el final.
Referencias
- ↑ Nachman, George (15 de abril de 2018). "Pegar corchetes" . Wiki de iTerm2 . Consultado el 13 de febrero de 2022 .
- ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2005). "Secuencias de control de Xterm" . Proyecto XFree86 . Recuperado el 13 de febrero de 2022 .
- ↑ Dickey, Thomas E. (2022). "XTerm – bracketed-paste" . invisible-island.net . Consultado el 13 de marzo de 2022 .
- ↑ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2022). "Secuencias de control de XTerm" . invisible-island.net . Modo de pegado entre corchetes . Recuperado el 13 de marzo de 2022 .
- ↑ "Códigos de escape propietarios - Documentación - iTerm2 - Reemplazo de terminal de macOS" . iterm2.com . Consultado el 13 de febrero de 2022 .
- Portapapeles (informática)
- Técnicas de interfaz de usuario