Un menú "Herramientas" podría contener las siguientes funciones:
- Corrección ortográfica
- Corregir los errores ortográficos.
- Ordenar
- Ordenar alfabéticamente el texto seleccionado.
- Mayúsculas/Minúsculas
- Convertir el texto seleccionado en mayúsculas o en minúsculas.
Probablemente debería contener también una función relativa a la indentación. Pero puesto que, aun siendo ésta una característica crucial para un programador, no se da por hecho que el principiante quiera o vaya a programar, la omitiremos de nuestra exposición.
La corrección ortográfica es una de las funciones estelares de los procesadores de texto. Los editores han ido integrándola en su propia interfaz, quizá como consecuencia del tirón que ha tenido en aquéllos. Sin embargo, se puede delegar perfectamente en herramientas especializadas externas al propio editor o, como sabemos, en ayudantes de HAL expertos en la materia. Ésta es la aproximación que realizaremos aquí. Sobra decir que, como consecuencia, omitimos toda referencia a una corrección al vuelo, muchas veces más molesta que eficaz, y nos concentramos en una corrección explícitamente solicitada tras la redacción y escritura del texto o de una parte significativa de él.
El ayudante de HAL a quien nos dirigiremos para solicitar la corrección se llama
aspell
y puede venir instalado por defecto en nuestra distribución. En caso de que no lo esté, hay que instalar al menos dos paquetes: el revisor ortográfico (paquete aspell
) y el diccionario del idioma en el que escribiremos (paquete aspell-es
, para el castellano):aptitude install aspell aspell-es
La sintaxis de la orden
aspell
que nosotros utilizaremos es la siguiente:aspell check nombre_de_fichero --lang=idioma [--mode=tipo_de_fichero]
O, en formato corto y sin determinación del tipo de fichero:
aspell -c nombre_de_fichero -l idioma
Las dos primeras opciones
-c
y -l
indican el fichero cuya ortografía se quiere revisar (check) y el idioma (language) cuyo diccionario se utilizará para realizar la corrección. --mode
es opcional. Su sentido es que podamos corregir documentos escritos en ciertas lenguas artificiales, documentos que se almacenan en ficheros de tipos especiales. La utilidad de esta opción es evidente. Imaginemos que nuestro documento es una página web en griego. Aparte del texto en griego, que es lo que tenemos delante cuando navegamos por ella, aparecerán etiquetas html que identifican y definen la estructura y otras características visuales. Estas etiquetas son las que analiza el navegador para mostrar la página tal como la vemos. Cualquier usuario puede visualizar esas etiquetas abriendo el código fuente de una página cualquiera en su navegador (la opción se encuentra en el menú "Ver" de los navegadores). Si le pedimos a aspell
que compruebe la ortografía de este código fuente revisará no sólo nuestro texto en griego normal y corriente, sino también un número bastante grande de etiquetas html no incluidas en su diccionario de griego. Como consecuencia, nos solicitará continuamente que corrijamos las palabras que constan en tales etiquetas. Para evitar este molesto comportamiento existe la opción --mode=html
o en versión corta, simplemente -H
. Gracias a esta opción aspell
pasará por encima de todas las etiquetas html y se concentrará exclusivamente en la revisión del texto en griego.Veamos, en conclusión, cuáles serían las órdenes concretas que habría que dar a HAL para que
aspell
ejerza sus funciones correctoras sobre tipos de documentos que un usuario español no programador puede querer revisar en algún momento de su existencia [Se indican sólo las versiones cortas de las órdenes]:aspell -c mi_documento -l es
- Revisa
mi_documento
, que contiene sólo texto normal y corriente. aspell -c mi_mensaje -l es -e
- Revisa
mi_mensaje
, que es un mensaje de correo electrónico. aspell -c mi_página.html -l es -H
- Revisa
mi_página
, una página web escrita en html. aspell -c mi_libro.tex -l es -t
- Revisa
mi_libro
, que es un libro etiquetado con LaTeX.
Una vez conocida la forma de informar a
aspell
sobre lo que queremos hacer, requerir su presencia en Vim es casi trivial. Lo hemos hecho ya con otros ayudantes de HAL. Decimos "casi", porque hay dos detalles más que tener en cuenta. El primero es la forma de indicar a aspell
que el documento que deseamos que corrija es justamente el que estamos editando. Para ello utilizamos el comodín '%
' en el lugar donde en la orden aspell
debe ir el nombre de fichero. Cuando aspell
vea el comodín lo sustituirá por el fichero que actualmente editamos. Por tanto, la forma de llamar a aspell
sería::!aspell -c % -l es
El segundo detalle ---no exclusivo de
aspell
, sino característico de llamadas a cualquier orden externa que reciba como argumento el documento actual--- es que resulta necesario guardar los cambios que se hayan realizado en el documento antes de llevar a cabo la corrección. Existe una opción de configuración de Vim para automatizar esta acción. Sin embargo, procederemos guardando los cambios explícitamente:
:w
:!aspell -c % -l es
Tras estas dos órdenes,
aspell
se pondrá en funcionamiento y nos mostrará una interfaz que no requiere comentario, debido a su sencillez. Completada la revisión y si se han producido correcciones, Vim nos notificará que el fichero ha cambiado y que deberemos volver a escribir los cambios pulsando 'C
' de 'Cargar' (o 'L
' de 'Load', si nuestra variable de entorno LC_MESSAGES
no está castellanizada).La citada orden
aspell
se puede asociar a una tecla por el procedimiento descrito el día pasado::map <F4> <Esc>:!aspell -c % -l es<CR>
Podemos añadir también la instrucción previa de escritura en disco al principio de la orden que queremos asociar a
F4
y evitarnos de este modo el trabajo de introducirla explícitamente.:map <F4> <Esc>:w<CR>:!aspell -c % -l es<CR>
Finalmente, podemos solicitar la recarga del fichero revisado por
aspell
y hacer desaparecer el mensaje de advertencia de Vim antes comentado::map <F4> <Esc>:w<CR>:!aspell -c % -l es<CR>:e! %<CR>
(La orden
:e
carga ---edita--- el fichero dado como argumento. Por su parte, :e!
lo carga, aunque ese fichero haya cambiado, que es justo lo que sucederá en nuestro caso, si se producen correcciones ortográficas.)Las otras dos funciones del menú "Herramientas", la de sustituir minúsculas por mayúsculas y viceversa, y la de ordenar alfabéticamente un fragmento del texto son relativamente triviales en Vim.
Para pasar un carácter de mayúscula a minúscula, y viceversa, se pulsa la tilde desde el modo de órdenes:
~
Para convertir en mayúsculas otros objetos de texto disponemos de una orden genérica,
gU
, seguida de un tecla de movimiento; o de órdenes especiales, que contienen gU
como prefijo.Por ejemplo, para que Vim ponga en mayúsculas una palabra del texto, la orden sería [suponemos que el cursor está al principio de la palabra]:
gUw
Para que actúe sobre una línea completa, diríamos [suponemos que el cursor está al principio de la línea]:
gU$
O también de esta otra forma [el cursor puede estar en cualquier parte de la línea]:
gUU
Las órdenes para pasar de mayúscula a minúscula son semejantes, pero con la '
u
' minúscula en lugar de mayúscula. O sea:'
guw
', 'gu$
' y 'guu
', respectivamente.En cuanto a la ordenación alfabética de un texto seleccionado podemos recurrir a una orden de HAL conocida, la orden
sort
y llamarla desde Vim como hemos hecho con otras órdenes externas a él. En este caso, habría además que prefijar la llamada a sort
con una indicación de la dirección sobre la que se aplicará la orden. Por ejemplo para que se aplique al rango de líneas 5-10::5,10 !sort
Vim proporciona una orden
sort
propia que emula el comportamiento de la orden sort
de HAL. La orden anterior con este sort
de Vim es prácticamente la misma::5,10 sort
El
sort
de Vim, del mismo modo que el de HAL, puede matizarse de distintas formas; por ejemplo, para que no tenga en cuenta la diferencia entre mayúsculas y minúsculas::5,10 sort i
Resumen:
aspell
es el ayudante de HAL para la revisión ortográfica.- La sintaxis de una orden
aspell
para la revisión ortográfica de un fichero de texto normal esaspell check nombre_de_fichero -l idioma
, donde la opción-l
define el idioma del diccionario que se usará para revisar el fichero indicado. - Cuando el fichero que va a revisar
aspell
es un mensaje de correo, un fichero escrito en html o un fichero (La)TeX se usa una opción especial con el fin de queaspell
no revise las palabras clave del código correspondiente. Estas opciones son, respectivamente,-e
,-H
y-t
. - Una forma de revisar la ortografía de nuestro texto desde Vim es recurrir a un experto de HAL en la materia, como
aspell
. En tal caso, el comodín '%
' deberá darse como el argumento deaspell check
. Por ejemplo::!aspell check % -l es
. - Antes de ejecutar
aspell
desde Vim sobre el documento actual se deben escribir en disco los cambios efectuados en él. Esto vale en general para cualquier orden externa que actúe sobre el fichero que contiene el documento. - Para convertir un carácter de mayúscula a minúscula o vicerversa se usa la orden
~
(carácter tilde). - Para convertir cualquier objeto de texto de mayúscula a minúscula y viceversa se usan órdenes que contienen el prefijo
gU
o, respectivamente,gu
. Por ejemplo:gUw
convierte en mayúsculas las minúsculas desde la posición del cursor hasta el final de la palabra actual;gUU
realiza la misma conversión para todos los caracteres de la línea actual. Las órdenesguw
,guu
sirven mutatis mutandis para convertir minúsculas en mayúsculas. - Para ordenar alfabéticamente un fragmento del texto editado se puede utilizar la orden
:sort
, que debe incluir una especificación de dirección. Por ejemplo,:5,10 sort i
ordena alfabéticamente las líneas entre la 5 y la 10, inclusives, sin tener en cuenta si contienen mayúsculas o minúsculas (opcióni
).
No hay comentarios:
Publicar un comentario