
Una característica de los buffers de emacs (incluso ansi-term
, shell
y eshell
) que realmente me gusta es la capacidad de C-l
"centrar" la línea actual en la terminal para que la mitad superior de la pantalla todavía contenga parte de la salida anterior.
Parece que un terminal estándar (no estoy seguro de cuál es el nombre del estándar) moverá la línea actual a la parte superior de la ventana cuando C-l
se presione. ¿Existe una forma general de mover la línea actual al centro de la pantalla? Si no es así, ¿hay alguna manera de hacer esto específicamente para iterm2, terminal o algún emulador de terminal que haya sido portado a OS X?
Respuesta1
La mayoría de los emuladores de terminal pueden "hacer" esto, pero requiere algo de trabajo:
- Supongamos que la línea que desea mover está en la parte inferior de la pantalla.
- Si desea mover esa línea hacia arriba, debe desplazar (o "indexar") la línea enviando una secuencia de escape a la fila inferior y (¡contando!) mover la línea hacia arriba según el número de líneas que desea desplazar.
- El desplazamiento mueve todas las líneas de la pantalla. Puede limitar la cantidad de líneas que se mueven configurando una región de desplazamiento. Al hacer esto, podrías evitar que las líneas en la mitad superior de la pantalla desaparezcan. Pero las líneas entre la posición original de tu línea y su objetivo desaparecerán.
Eso sólo mueve la alineación. Puede mover una línea hacia abajo, de manera similar, usando la "indexación inversa". Estas operaciones por cierto no están en elestándarECMA-48, pero están en algo parecido a xterm (basado en DEC vt100). ansi-term
admite desplazamiento/indexación.
Finalmente, eso es solo arriba o abajo. Para mover una línea hacia la izquierda o hacia la derecha, debe enviar secuencias de escape para insertar o eliminar caracteres mientras el cursor está al principio de la línea.
Estas secuencias de escape están documentadas en la terminfo(5)
página del manual. He mencionado estos:
csr
(establecer región de desplazamiento)
ind
(índice)
rin
(índice inverso)
cup
(posición del cursor)
ich
(insertar carácter)
dch
(eliminar carácter)
Otras lecturas: