Blog atrasado con gajes del oficio

Reemplazar Con Vim. Reemplazos de minúsculas con mayúsculas

O como se dice en Inglés: capitalization, se puede lograr fácilmente en vim mediante el empleo de mayúsculas al comienzo de oraciones a través del uso de una expresión regular o regex, sin la necesidad de utilizar algún que otro script (que puede causar efectos secundarios en el funcionamiento), para lograr el reemplazo de las minúsculas.

En el website de programadores de superuser.com, superuser.com/questions/737130/automatically-capitalize-the-first-letter-of-sentence-in-vim se hace esta misma pregunta para lograr el reemplazo automático de minúsculas por mayúsculas al principio de cada oración.

Una de las repuestas 1 hace énfasis de esto mediante la adición de un unas líneas de script o programa de ejecución.

El problema que esto conlleva, y como uno de los usuarios comentó,

The only problem is this script seems to add a noticeable lag when typing

Es que mientras más extenso sea el documento, más se experimenta el lag o el retraso en el ingreso de caracteres. Es decir, la óptima funcionalidad se pierde parcialmente. Solo es necesario en tener un documento que comprenda un número de ciento y algo líneas, (y esto es sin contar que haya encima de ello algunas que otras líneas de código), para notar la diferencia.

Considero que sin tanta complicación que más tarde nos puede afectar, la mínima utilización de un reemplazo de caracteres mediante una expresión regular, tuviese mejores resultados.

Para cambiar la minúscula por mayúscula sería necesario entonces algo como:

 $ :%s/\.[a-z]/\U&/g

e. g., si el espacio después de la puntuación fue ingresado, no se te olvide cambiar el código encima con el espacio sobrante correspondiente, tal como

 $ :%s/\. [a-z]/\U&/g

y para lograr el intercambio al comienzo de cada línea, entonces

 $ :%s/^[a-z]/\U&/g

reemplaza la minúscula desde el comienzo.

Para reemplazar múltiples patrones de búsqueda, se debe emplear el sufijo e después de la expresión regular con la que se modificaría la búsqueda, separado de una barra vertical | que separe los dos grupos, es decir:

 $ :%s/^[a-z]/\U&/ge | %s/\. [a-z]/\U&/ge

Otras de las maneras de emplear esta expresión regular es mediante la substitución de [a-z] por \w. una búsqueda rápida en :help nos indica que \w equivale a [0-9A-Za-z]

por lo tanto se pudiese emplear algo tal como

 $ :%s/^\w/\U&/ge | %s/\. \w/\U&/ge 

Footnotes

↩︎ Respuesta de usuario de vim para el empleo de un script que reemplace minúscula por mayúscula pero que causa lag en documentos http://superuser.com/a/737155