43 Edición de Imágenes
Para editar una imagen formada por caracteres de texto (por ejemplo, una imagen de la división de un registro en campos, como un comentario en un programa), utilice el comando M-x picture-mode
para acceder al modo Imagen.
En el modo Imagen, la edición se basa en el modelo de cuarto plano del texto, según el cual los caracteres de texto se encuentran dispuestos en un área que se extiende infinitamente hacia la derecha y hacia abajo. El concepto de final de línea no existe en este modelo; lo más que se puede decir es dónde se encuentra el último carácter no en blanco de la línea.
Por supuesto, Emacs siempre considera el texto como una secuencia de caracteres, y las líneas realmente tienen un final. Pero el modo Imagen sustituye los comandos más utilizados por variantes que simulan el modelo de cuarto de plano del texto. Lo hacen insertando espacios o convirtiendo tabuladores en espacios.
La mayoría de los comandos básicos de edición de Emacs son redefinidos por el modo Imagen para hacer esencialmente lo mismo pero en un cuarto de plano. Además, este modo define varias teclas que empiezan con el prefijo C-c
para ejecutar comandos especiales de edición de imágenes.
Una de estas teclas, C-c C-c
, es particularmente importante. A menudo, una imagen forma parte de un archivo más grande que suele editarse en algún otro modo principal. El modo imagen registra el nombre del modo principal anterior para que pueda utilizar el comando C-c C-c
(picture-mode-exi
) más adelante para volver a ese modo. C-c C-c
también borra los espacios al final de las líneas, a menos que se le dé un argumento numérico.
Los comandos especiales del modo Imagen funcionan todos en otros modos (siempre que la biblioteca de imágenes esté cargada), pero no están vinculados a teclas excepto en el modo Imagen. Las descripciones que siguen hablan de mover «una columna», etc., pero todos los comandos del modo imagen manejan argumentos numéricos como sus equivalentes normales.
Al activar el modo de imagen se ejecuta el gancho picture-mode-hook
. Se pueden encontrar extensiones adicionales al modo Picture en artist.el
.
43.1 Edición Básica en Modo Imagen
La mayoría de las teclas hacen en modo Imagen lo mismo que hacen habitualmente, pero lo hacen en un estilo de cuarto de plano. Por ejemplo, C-f
es la tecla de rebote para ejecutar picture-forward-column
, un comando que mueve el punto una columna a la derecha, insertando un espacio si es necesario para que el final real de la línea no suponga ninguna diferencia. C-b
es la orden de rebote para ejecutar picture-backward-column
, que siempre mueve el punto una columna a la izquierda, convirtiendo un tabulador en varios espacios si es necesario. C-n
y C-p
son rebotes para ejecutar picture-move-down
y picture-move-up
, que pueden insertar espacios o convertir tabuladores según sea necesario para asegurarse de que el punto permanece exactamente en la misma columna. C-e
ejecuta picture-end-of-line
, que se mueve después del último carácter no en blanco de la línea. C-a
ejecuta picture-beginning-of-line
. (La elección del modelo de pantalla no afecta a los inicios de línea; lo único que hace este comando es actualizar a 0 la columna de imagen actual).
La inserción de texto se adapta al modelo de pantalla de cuarto de plano mediante el uso del modo de sobrescritura (véase 24.2 Modos Menores.) Los caracteres autoinsertados sustituyen al texto existente, columna a columna, en lugar de empujar el texto existente hacia la derecha. RETURN (RET
) ejecuta picture-newline
, que simplemente se desplaza al principio de la línea siguiente para que el nuevo texto sustituya a esa línea.
En el modo Imagen, los comandos que normalmente borran o eliminan texto, en su lugar lo borran (sustituyéndolo por espacios). DEL
(picture-backward-clear-column
) sustituye el carácter precedente por un espacio en lugar de eliminarlo; esto desplaza el punto hacia atrás. C-d
(picture-clear-column
) sustituye el carácter o caracteres siguientes por espacios, pero no desplaza el punto. (Si desea borrar caracteres a espacios y avanzar sobre ellos, utilice SPC
). C-k
(picture-clear-line
) realmente elimina el contenido de las líneas, pero no borra las nuevas líneas del buffer.
Para realizar la inserción real, debe utilizar comandos especiales. C-o
(picture-open-line
) crea una línea en blanco después de la línea actual; nunca divide una línea. C-M-o
(split-line
) tiene sentido en modo Imagen, por lo que no se modifica. C-j
(picture-duplicate-line
) inserta otra línea con el mismo contenido debajo de la línea actual.
Para realizar un borrado real en modo Imagen, utilice C-w
, C-c C-d
(que se define como delete-char
, al igual que C-d
en otros modos), o uno de los comandos de rectángulo de imagen (consulte 43.4 Comandos de Rectángulo en Modo Imagen).
43.2 Control del Movimiento Después de la Inserción
Dado que los caracteres de autoinserción en el modo Imagen sobrescriben y mueven el punto, no existe ninguna restricción esencial sobre cómo debe moverse el punto. Normalmente el punto se mueve hacia la derecha, pero puede especificar cualquiera de las ocho direcciones ortogonales o diagonales para el movimiento después de un carácter autoinsertado. Esto es útil para dibujar líneas en el búfer.
C-c <
)C-c LEFT
)Mueve a la izquierda después de la inserción (
picture-movement-left
).
C-c >
)C-c RIGHT
)Mueve a la derecha después de la inserción (
picture-movement-right
).
C-c ^
)C-c UP
)Mueve a arriba después de la inserción (
picture-movement-up
).
C-c .
)C-c DOWN
)Mueve abajo después de la inserción (
picture-movement-down
).
C-c `
)C-c Home
)Mueve hacia arriba y hacia la izquierda («noroeste») después de la inserción (
picture-movement-nw
).
C-c '
)C-c PageUp
)C-c prior
)Mueve hacia arriba y hacia la derecha («noreste») después de la inserción (
imagen-movimiento-ne
).
C-c /
)C-c End
)Para desplazarse hacia abajo y hacia la izquierda («suroeste») después de la inserción (
picture-movement-sw
).
C-c \
)C-c PageDown
)C-c next
)Desplazarse hacia abajo y hacia la derecha («sureste») tras la inserción (
imagen-movimiento-se
).
Dos comandos de movimiento se mueven en función de la dirección actual de inserción de la imagen. El comando C-c C-f
(picture-motion
) se mueve en la misma dirección que el movimiento tras la inserción actual, mientras que C-c C-b
(picture-motion-reverse
) se mueve en la dirección opuesta.
43.3 Pestañas del Modo Imagen
En el modo Imagen se ofrecen dos tipos de acciones similares a las pestañas. Utilice M-TAB
(picture-tab-search
) para el tabulado basado en el contexto. Sin argumento, se mueve a un punto por debajo del siguiente carácter «interesante» que sigue al espacio en blanco en la línea anterior no en blanco. «Next» (Siguiente) aquí significa «que aparece en una posición horizontal mayor que en la que comienza el punto». Con el argumento prefijo, como en C-u M-TAB
, este comando se mueve al siguiente carácter interesante en la línea actual. M-TAB
no cambia el texto; sólo mueve el punto. Los caracteres «interesantes» se definen mediante la variable picture-tab-chars
, que debe definir un conjunto de caracteres. La sintaxis para esta variable es como la sintaxis usada dentro de [...]
en una expresión regular, pero sin el [
y el ]
. Su valor por defecto es "!-~"
.
El propio TAB
ejecuta picture-tab
, que opera basándose en la configuración actual de tabulador; en modo Imagen es el equivalente de tab-to-tab-stop
. Normalmente sólo mueve el punto, pero con un argumento numérico borra el texto sobre el que se mueve.
Las formas de tabulación basadas en contexto y en tabulador se unen mediante el comando C-c TAB
(picture-set-tab-stops
). Este comando establece los tabuladores en las posiciones que M-TAB
consideraría significativas en la línea actual. El uso de este comando, junto con TAB
, puede conseguir el efecto del tabulado basado en el contexto. Pero M-TAB
es más conveniente en los casos en que es suficiente.
Puede ser conveniente evitar el uso de caracteres de tabulación reales en las imágenes. Por ejemplo, esto evita que C-x TAB
estropee la imagen. Puede hacerlo estableciendo la variable indent-tabs-mode
a nil
.
43.4 Comandos de Rectángulo en Modo Imagen
El modo Imagen define comandos para trabajar en trozos rectangulares del texto de forma que encajen con el modelo de cuarto plano. Los comandos estándar de rectángulo también pueden ser útiles. Véase 13.5 Rectángulos.
Ctrl-c Ctrl-k (C-c C-k
)
Borra el rectángulo-región con espacios (
picture-clear-rectangle
). Con un argumento prefijo, borra el texto.
Ctrl-c Ctrl-w r (C-c C-w r
)
Similar, pero guarda primero el contenido del rectángulo en el registro r (
picture-clear-rectangle-to-register
). Véase 13 Matar y Mover Texto.
Ctrl-c Ctrl-y (C-c C-y
)
Copia el último rectángulo matado en el búfer sobrescribiendo, con la esquina superior izquierda en el punto (
picture-yank-rectangle
). Con argumento, insertar en su lugar.
Ctrl-c Ctrl-x r (C-c C-x r
)
Similar, pero utiliza el rectángulo del registro
r
(picture-yank-rectangle-from-register
).
Los comandos de rectángulo de imagen C-c C-k
(picture-clear-rectangle
) y C-c C-w
(picture-clear-rectangle-to-register
) difieren de los comandos de rectángulo estándar en que normalmente eliminan el rectángulo en lugar de borrarlo; esto es análogo a la forma en que se cambia C-d
en el modo Imagen.
Sin embargo, el borrado de rectángulos puede ser útil en el modo Imagen, por lo que estos comandos borran el rectángulo si se les da un argumento numérico. C-c C-k
ya sea con o sin un argumento numérico guarda el rectángulo para C-c C-y
.
Los comandos del modo Imagen para desplazar rectángulos difieren de los estándar en que sobrescriben en lugar de insertar. Esto es lo mismo que la inserción de otro texto en el modo Imagen difiere de otros modos. C-c C-y
(picture-yank-rectangle
) inserta (sobrescribiendo) el rectángulo que fue eliminado más recientemente, mientras que C-c C-x
(picture-yank-rectangle-from-register
) hace lo mismo con el rectángulo que se encuentra en un registro especificado.