17 Comandos para Corregir Errores Tipográficos
En este capítulo describimos comandos que resultan útiles cuando se detecta un error durante la edición. El más básico de estos comandos es el comando deshacer Ctrl-/ C-/
(también vinculado a Ctrl-x u (C-x u
) y Ctrl-_ (C-_
)). Esta orden deshace un único comando, o parte de èl (como en el caso de query-replace
), o varias inserciones consecutivas de caracteres. Las repeticiones consecutivas de C-/
deshacen cambios anteriores cada vez, hasta el límite de la información de deshacer disponible.
Aparte de los comandos descritos aquí, puede borrar texto usando comandos de borrado como DEL
(delete-backward-char
). Estos se describieron anteriormente en este manual. Véase 8.3 Borrar Texto.
17.1 Deshacer
El comando deshacer anula los cambios recientes en el texto del búfer. Cada búfer registra los cambios individualmente, y el comando deshacer siempre se aplica al búfer actual. Puede deshacer todos los cambios en un búfer hasta donde lleguen los registros del búfer. Normalmente, cada comando de edición hace una entrada separada en los registros de deshacer, pero algunos comandos como query-replace
dividen sus cambios en múltiples entradas para mayor flexibilidad a la hora de deshacer. Los comandos de inserción de caracteres consecutivos suelen agruparse en un único registro de deshacer, para que deshacer sea menos tedioso.
C-/
)C-x u
)C-_
)Deshace una entrada en los registros de deshacer (
undo
) del búfer actual.
Para empezar a deshacer, teclee Ctrl-/ (C-/
) (o sus alias, Ctrl-_ (C-_
) o Ctrl-x u (C-x u
)) [6]. Esto deshace el cambio más reciente en el buffer, y mueve el punto de vuelta a donde estaba antes de ese cambio. Las repeticiones consecutivas de C-/
(o sus alias) deshacen cambios cada vez más anteriores en el búfer actual. Si ya se han deshecho todos los cambios registrados, el comando deshacer indica un error.
Cualquier comando que no sea de deshacer rompe la secuencia de comandos de deshacer. A partir de ese momento, toda la secuencia de comandos de deshacer que acaba de realizar se colocan a su vez en el registro de deshacer. Por lo tanto, para volver a aplicar los cambios que ha deshecho, escriba Ctrl-f (C-f
) o cualquier otro comando que rompa inofensivamente la secuencia de deshacer; a continuación, escriba Ctrl-/ (C-/
) una o más veces para deshacer algunos de los comandos de deshacer.
Alternativamente, si desea reanudar el deshacer, sin rehacer los comandos de deshacer anteriores, use M-x undo-only
. Esto es como deshacer, pero no rehará los cambios que acaba de deshacer. Para complementarlo, M-x undo-redo
deshará los comandos de deshacer anteriores (y no se registrará como un comando que se puede deshacer).
Si nota que un búfer ha sido modificado accidentalmente, la forma más fácil de recuperarlo es teclear Ctrl-/ (C-/
) repetidamente hasta que las estrellas desaparezcan de la parte delantera de la línea de modo (véase 1.3 La Línea de Modo). Cuando un comando deshacer hace desaparecer las estrellas de la línea de modo, significa que el contenido del búfer es el mismo que la última vez que se leyó o guardó el archivo. Si no recuerda si cambió el buffer deliberadamente, teclee Ctrl-/ (C-/
) una vez. Cuando vea deshecho el último cambio que hizo, verá si fue un cambio intencionado. Si fue un accidente, déjalo sin hacer. Si fue deliberado, rehaga el cambio como se ha descrito anteriormente.
Alternativamente, puede descartar todos los cambios desde que el buffer fue visitado o guardado por última vez con M-x revert-buffer
(ver 19.4 Revertir un Búfer).
Cuando hay una región activa, cualquier uso de deshacer realiza un deshacer selectivo: deshace el cambio más reciente dentro de la región, en lugar de todo el búfer. Sin embargo, cuando el modo de marcas transitorias está desactivado (véase 12.7 Desactivar el Modo de Marca Transitoria ), C-/
siempre actúa sobre todo el búfer, ignorando la región. En este caso, puede realizar un deshacer selectivo proporcionando un argumento de prefijo al comando deshacer: C-u C-/
. Para deshacer más cambios en la misma región, repita el comando deshacer (no es necesario el argumento prefijo).
Algunos búferes especializados no hacen registros de deshacer. Los búferes cuyos nombres comienzan con espacios nunca lo hacen; estos, son usados internamente por Emacs para contener texto que los usuarios normalmente no miran o editan.
Cuando la información de deshacer de un búfer se hace demasiado grande, Emacs descarta los registros más antiguos de vez en cuando (durante la recolección de basura). Puede especificar cuánta información de deshacer guardar configurando las variables undo-limit
, undo-strong-limit
, y undo-outer-limit
. Sus valores se expresan en bytes.
La variable undo-limit
establece un límite blando: Emacs mantiene datos de deshacer para suficientes comandos como para alcanzar este tamaño, y quizás excederlo, pero no mantiene datos para ningún comando anterior más allá de eso. Su valor por defecto es 160000. La variable undo-strong-limit
establece un límite más estricto: cualquier comando anterior (aunque no el más reciente) que empuje el tamaño más allá de esta cantidad es olvidado. El valor por defecto de undo-strong-limit
es 240000.
Independientemente de los valores de esas variables, el cambio más reciente nunca se descarta a menos que sea mayor que undo-outer-limit
(normalmente 24.000.000). En ese punto, Emacs descarta los datos de deshacer y le advierte de ello. Esta es la única situación en la que no puede deshacer el último comando. Si esto ocurre, puede aumentar el valor de undo-outer-limit
para que sea aún menos probable que ocurra en el futuro. Pero si no esperaba que el comando creara datos de deshacer tan grandes, entonces probablemente se trate de un error y debería informar de ello. Ver 53 Informar de Fallos.
17.2 Transponer Texto
Ctrl-t (C-t
)
Transpone dos caracteres (
transpose-chars
).
Alt-t (M-t
)
Transpone dos palabras (
transpose-words
).
Ctrl-Alt-t (C-M-t
)
Transpone dos expresiones equilibradas (
transpose-sexps
).
Ctrl-x Ctrl-t (C-x C-t
)
Transpone dos líneas (
transpose-lines
).
Alt-x transpose-sentences
(M-x transpose-sentences
)
Transpone dos frases (
transpose-sentences
).
Alt-x M-x transpose-paragraphs
(M-x transpose-paragraphs
)
Transpone dos párrafos (
transpose-paragraphs
).
Alt-x transpose-regiones
(M-x transpose-regions
)
Transpone dos regiones.
El error común de transponer dos caracteres puede solucionarse, cuando son adyacentes, con el comando C-t
(transpose-chars
). Normalmente, C-t
transpone los dos caracteres a ambos lados del punto. Cuando se da al final de una línea, en lugar de transponer el último carácter de la línea con la nueva línea, lo que sería inútil, C-t
transpone los dos últimos caracteres de la línea. Por lo tanto, si detecta el error de transposición enseguida, puede solucionarlo con C-t
. Si no lo detecta tan rápido, debe volver a colocar el cursor entre los dos caracteres transpuestos antes de teclear C-t
. Si ha transpuesto un espacio con el último carácter de la palabra delante, los comandos de movimiento de palabra (M-f
, M-b
, etc.) son una buena forma de llegar hasta allí. De lo contrario, una búsqueda inversa (C-r
) suele ser la mejor manera. Véase 16 Búsqueda y Reemplazo.
M-t
transpone la palabra antes del punto con la palabra después del punto (transpose-words
). Desplaza el punto hacia delante sobre una palabra, arrastrando también hacia delante la palabra que precede o contiene al punto. Los caracteres de puntuación entre las palabras no se mueven. Por ejemplo, FOO, BAR
se transpone a BAR, FOO
en lugar de BAR FOO,
. Si el punto se encuentra al final de la línea, la palabra anterior al punto se transpondrá con la primera palabra de la línea siguiente.
C-M-t
(transpose-sexps
) es un comando similar para transponer dos expresiones (véase 27.4.1 Expresiones con Paréntesis Equilibrados), y C-x C-t
(transpose-lines
) intercambia líneas. M-x transpose-sentences
y M-x transpose-paragraphs
transponen frases y párrafos, respectivamente. Estos comandos funcionan como M-t
excepto en lo que respecta a las unidades de texto que transponen.
Un argumento numérico para un comando de transposición sirve como recuento de repeticiones: indica al comando de transposición que mueva el carácter (o palabra o expresión o línea) anterior o que contenga el punto a través de varios otros caracteres (o palabras o expresiones o líneas). Por ejemplo, Ctrl-u 3 Ctrl-t (C-u 3 C-t
) desplaza el carácter anterior al punto hacia adelante a través de otros tres caracteres. Cambiaría f∗oobar
por oobf∗ar
. Esto equivale a repetir C-t
tres veces. Ctrl-u - 4 Alt-t (C-u - 4 M-t
) mueve la palabra anterior al punto anterior a través de cuatro palabras. Ctrl-u - Ctrl-Alt-t (C-u - C-M-t
) anularía el efecto de Ctrl-Alt-t (C-M-t
) simple.
A un argumento numérico de cero se le asigna un significado especial (porque de otro modo un comando con un recuento de repeticiones de cero no haría nada): transponer el carácter (o palabra o expresión o línea) que termina después del punto con el que termina después de la marca.
M-x transpose-regions
transpone el texto entre el punto y la marca con el texto entre las dos últimas marcas empujado al anillo de la marca (véase 12.1 Fijar la Marca). Con un argumento de prefijo numérico, transpone el texto entre punto y marca con el texto entre dos marcas sucesivas que muchas entradas atrás en el anillo de marca. Este comando se usa mejor para transponer varios caracteres (o palabras o frases o párrafos) de una sola vez.
17.3 Conversión Mayúsculas y Minúsculas
Alt-- Alt-l (M-- M-l
)
Convierte la última palabra a minúsculas. Nota
Meta--
es Meta-menos (Alt--).
Alt-- Alt-u (M-- M-u
)
Convierte la última palabra a mayúsculas.
Alt-- Alt-c (M-- M-c
)
Convierte la última palabra a minúscula con inicial mayúscula.
Un error muy común es escribir palabras en mayúsculas o minúsculas equivocadas. Por eso, los comandos de conversión de palabras M-l
, M-u
y M-c
tienen una característica especial cuando se usan con un argumento negativo: no mueven el cursor. En cuanto vea que ha escrito mal la última palabra, puede simplemente convertirla a mayúsculas y seguir escribiendo. Consulte 26.7. Comandos de Conversión de Mayúsculas y Minúsculas.
17.4 Comprobar y Corregir la Ortografía
En esta sección se describen los comandos para comprobar la ortografía de una sola palabra o de una parte de un búfer. Estas órdenes sólo funcionan si está instalado un programa corrector ortográfico, uno de Hunspell, Aspell, Ispell o Enchant. Estos programas no forman parte de Emacs, pero uno de ellos suele estar instalado en GNU/Linux y otros sistemas operativos libres. Véase Aspell en El manual de Aspell.
Si sólo tiene instalado uno de los programas correctores ortográficos, Emacs lo encontrará cuando invoque por primera vez uno de los comandos descritos aquí. Si tiene más de uno instalado, puede controlar cuál se usa personalizando la variable ispell-program-name
.
Alt-$ (M-$
)
Comprueba y corrige la ortografía de la palabra en el punto (
ispell-palabra
). Si la región está activa, lo hace para todas las palabras de la región.
Alt-x ispell
(M-x ispell
)
Comprueba y corrige la ortografía de todas las palabras del búfer. Si la región está activa, hágalo para todas las palabras de la región.
Alt-x ispell-buffer
(M-x ispell-buffer
)
Comprueba y corrige la ortografía en el búfer.
Alt-x ispell-region
(M-x ispell-region
)
Comprueba y corrige la ortografía en la región.
Alt-x ispell-message
(M-x ispell-message
)
Revisa y corrige la ortografía de un borrador de mensaje de correo, excluyendo el material citado.
Alt-x ispell-comments-and-strings
(M-x ispell-comments-and-strings
)
Comprueba y corrige la ortografía de los comentarios y las cadenas en el búfer o la región.
Alt-x ispell-comment-or-string-at-point
(M-x ispell-comment-or-string-at-point
)
Comprueba el comentario o la cadena en el punto.
ispell-change-dictionary
RETURN dicc RETURNM-x ispell-change-dictionary RET
dicc RET
)Reinicia el proceso de corrección ortográfica, usando a dicc como diccionario.
Alt-x ispell-kill-ispell
(M-x ispell-kill-ispell
)
Mata el subproceso del corrector ortográfico.
M-TAB
)ESC TAB
)C-M-i
)Completa la palabra antes del punto basándose en el diccionario ortográfico (
ispell-complete-wordù
).
Alt-x flyspell-mode
(M-x flyspell-mode
)
Activa el modo Flyspell, que resalta todas las palabras mal escritas.
Alt-x flyspell-prog-mode
(M-x flyspell-prog-mode
)
Activa el modo Flyspell sólo para comentarios y cadenas.
Para comprobar la ortografía de la palabra alrededor o antes de punto, y opcionalmente corregirla también, escriba M-$
(ispell-word
). Si hay una región activa, M-$
comprueba la ortografía de todas las palabras dentro de la región. Véase 12 La marca y la región. (Cuando el modo Marca transitoria (Transient Mark mode) está desactivado, M-$
actúa siempre sobre la palabra alrededor o antes del punto, ignorando la región; véase 12.7 Desactivar el Modo de Marca Transitoria (Transient Mark Mode)).
Del mismo modo, el comando M-x ispell
realiza la corrección ortográfica en la región si hay una activa, o en todo el búfer en caso contrario. Los comandos M-x ispell-buffer
y M-x ispell-region
realizan explícitamente la corrección ortográfica en todo el búfer o en la región, respectivamente. Para revisar la ortografía de un mensaje de correo electrónico que esté escribiendo, use M-x ispell-message
; ese comando revisa todo el búfer, excepto el material que esté sangrado o que parezca citado de otros mensajes. Véase 33 Envío de Correo. Cuando trabaje con código fuente, puede usar M-x ispell-comments-and-strings
o M-x ispell-comment-or-string-at-point
para comprobar sólo los comentarios o las cadenas literales.
Cuando uno de estos comandos encuentra lo que parece ser una palabra incorrecta, le pregunta qué hacer. Normalmente muestra una lista numerada de palabras cercanas a la palabra incorrecta. A continuación, debe escribir una respuesta de un solo carácter. Éstas son las respuestas válidas:
- dígito
Sustituye la palabra, sólo esta vez, por uno de los cuasi-aciertos mostrados. Cada cuasi fallo aparece con un dígito; escríbalo para seleccionarlo.
SPACE (SPC
)
Omite esta palabra: sigue considerándola incorrecta, pero no la cambie aquí.
r nueva RETURN (r
nueva RET
)
Sustituye la palabra, sólo esta vez, por nueva. (La cadena de sustitución se volverá a analizar en busca de más errores ortográficos).
R nueva RETURN (R
nueva RET
)
Sustituye la palabra por nueva, y hace una consulta-sustitución (
query-replace
) para poder sustituirla en otro lugar del búfer si lo desea. (Los reemplazos se volverán a escanear en busca de más errores ortográficos).
a (a
)
Acepta la palabra incorrecta: trata la palabra como correcta, pero sólo en esta sesión de edición.
A (A
)
Acepta la palabra incorrecta: la trata como correcta, pero sólo en esta sesión de edición y para este búfer.
y (i
)
Inserta esta palabra en su archivo privado de diccionario para que se considere correcta a partir de ahora, incluso en futuras sesiones.
m (m
)
Como
i
, pero también puede especificar la información de completado del diccionario.
u (up
)
Inserta la versión en minúsculas de esta palabra en el archivo privado de su diccionario.
l palabra RETURN (l
palabra RET
)
Busca en el diccionario aquellas palabras que coincidan con el término palabra. Estas palabras se convierten en la nueva lista de casi-errores; puede seleccionar una de ellas como reemplazo tecleando un dígito. Puede usar
*
en palabra como comodín.
C-g
)X
)Sale de la revisión ortográfica interactiva, dejando el punto en la palabra que se estaba revisando. Después puede reiniciar la revisión con Ctrl-u Alt-$ (
C-u M-$
).
x (x
)
Sale del corrector ortográfico interactivo y vuelve a colocar el punto donde estaba cuando se activó el mismo.
q (q
)
Sale de la corrección ortográfica interactiva y mata el subproceso del corrector ortográfico.
? (?
)
Muestra lista de opciones.
En el modo Texto y modos relacionados, M-TAB
(ispell-complete-word
) realiza el completado en el búfer basándose en la corrección ortográfica. Introduzca el principio de una palabra y escriba Alt-TAB (M-TAB
); aparecerá una lista de palabras completadas. (Si su gestor de ventanas intercepta M-TAB
, escriba ESCTAB (ESC TAB
) o Ctrl-Alt-:Kbd<2<1<3:i (C-M-i
).) Cada completado aparece con un dígito o carácter; escriba ese dígito o carácter para elegirlo.
Una vez iniciado, el subproceso del corrector ortográfico continúa ejecutándose, a la espera de algo que hacer, de modo que los siguientes comandos de corrección ortográfica se completen más rápidamente. Si desea deshacerse del proceso, use M-x ispell-kill-ispell
. Esto no suele ser necesario, ya que el proceso no usa tiempo del procesador excepto cuando hace la corrección ortográfica.
Los correctores ortográficos buscan la ortografía en dos diccionarios: el diccionario estándar y su diccionario personal. El diccionario estándar se especifica mediante la variable ispell-local-dictionary
o, si es nula, mediante la variable ispell-dictionary
. Si ambas son nulas, se usa el diccionario por defecto del programa de ortografía. El comando M-x ispell-change-dictionary
establece el diccionario estándar para el búfer y luego reinicia el subproceso, para que use un diccionario estándar diferente. Su diccionario personal se especifica mediante la variable ispell-personal-dictionary
. Si es nil
, el programa de ortografía busca un diccionario personal en una ubicación predeterminada, que es específica para cada corrector ortográfico.
Para completar palabras se usa un diccionario distinto. La variable ispell-complete-word-dict especifica
el nombre de archivo de este diccionario. El diccionario de completado debe ser diferente porque no puede usar la información sobre raíces y afijos de las palabras, que el corrector ortográfico utiliza para detectar variaciones de las palabras. Para algunos idiomas, existe un diccionario de corrección ortográfica pero no un diccionario de completado de palabras.
El modo Flyspell es un modo secundario que realiza una corrección ortográfica automática del texto que escribe a medida que lo teclea. Cuando encuentra una palabra que no reconoce, la resalta. Escriba Alt-x flyspell-mode
(M-x flyspell-mode
) para activar el modo Flyspell en el búfer actual. Para activar el modo Flyspell en todos los búfers de modo texto, añada flyspell-mode
a text-mode-hook
. Ver 50.2.2 Ganchos (Hooks). Tenga en cuenta que, como el modo Flyspell necesita comprobar cada palabra por la que se mueve, ralentizará el movimiento del cursor y los comandos de desplazamiento. Tampoco comprueba automáticamente el texto que no ha escrito o por el que no se ha movido; para ello utilice flyspell-region
o flyspell-búfer
.
Cuando el modo Flyspell resalta una palabra como mal escrita, puede hacer clic sobre ella con ratón-2
(flyspell-correct-word
) para mostrar un menú de posibles correcciones y acciones. Si desea que el menú aparezca con ratón-3
, active el modo de menú contextual. Además, C-
. o ESC TAB
(flyspell-auto-correct-word
) propondrá varias correcciones sucesivas para la palabra en el punto, y C-c $
(flyspell-correct-word-before-point
) desplegará un menú de posibles correcciones. Por supuesto, siempre puede corregir la palabra mal escrita editándola manualmente como desee.
El modo Flyspell Prog funciona igual que el modo Flyspell normal, con la diferencia de que sólo comprueba las palabras de los comentarios y las constantes de cadena. Esta función es útil para editar programas. Escriba Alt-x flyspell-prog-mode
(M-x flyspell-prog-mode
) para activar o desactivar este modo en el búfer actual. Para activar este modo en todos los búferes del modo de programación, añada flyspell-prog-mode
a prog-mode-hook
(ver 50.2.2 Ganchos (Hooks)).