Aquí está un solución utilizando la línea de comandos:
- Conversión de números en super/subíndice
El sed
le permite utilizar una tabla de traducción para convertir caracteres en otros:
$ echo "abc513" | sed -e 'y|0123456789|¹²³|'
abc¹³
$ echo "abc513" | sed -e 'y|0123456789||'
abc
A partir de ahí, podemos escribir un tsubst
script:
$ cat ./tsubst
#!/bin/bash
function superscript { echo "$1" | sed -e 'y|0123456789|¹²³|'; }
function subscript { echo "$1" | sed -e 'y|0123456789||'; }
function phrase_from_shortcut_pattern {
if [[ "$1" =~ ^\^(.+)$ ]]
then
# ^ -> superscript
echo "$(superscript "${BASH_REMATCH[1]}")"
elif [[ "$1" =~ ^_(.+)$ ]]
then
# _ -> subscript
echo "$(subscript "${BASH_REMATCH[1]}")"
else
echo "$1"
fi
}
phrase_from_shortcut_pattern "${@}"
Ese script toma un argumento, un Reemplazo de Texto patrón de acceso directo con un ^
o _
para indicar una transformación de super o subíndice, y devuelve el correspondiente frase :
$ ./tsubst _answer42
answer
$ ./tsubst ^answer42
answer²
- Generar frases a partir de listas o rangos de patrones de atajos
Con ese script, podemos utilizar bash
bucles y sustituciones para generar frases a partir de un lista de patrones de acceso directo:
$ for p in _42 ^42; do echo "${p} -> $(./tsubst "${p}")"; done
_42 ->
^42 -> ²
O un gama de patrones de acceso directo:
$ for p in _{6..8} ^{9..11}; do echo "${p} -> $(./tsubst "${p}")"; done
_6 ->
_7 ->
_8 ->
^9 ->
^10 -> ¹
^11 -> ¹¹
- Añadir sustituciones de texto desde la línea de comandos
Esta es la parte complicada... He encontrado un utilidad de línea de comandos que hace bien su trabajo: accesos directos .
$ shortcuts read
0: "jrv" —> "J’arrive !"
1: "omw" —> "On my way!"
$ shortcuts create "xyz" "XYZ"
$ shortcuts read
0: "xyz" —> "XYZ"
1: "jrv" —> "J’arrive !"
2: "omw" —> "On my way!"
$ shortcuts delete xyz
$ shortcuts read
0: "jrv" —> "J’arrive !"
1: "omw" —> "On my way!"
- Añadir automáticamente entradas de reemplazo de texto...
Ahora podemos componer las dos utilidades para añadir a las preferencias de Reemplazos de Texto:
$ for p in _42 ^42 _{6..8} ^{9..11}; do
> ./shortcuts create "${p}" "$(./tsubst "${p}")"
> done
$ ./shortcuts read
0: "^11" —> "¹¹"
1: "^10" —> "¹"
2: "^9" —> ""
3: "_8" —> ""
4: "_7" —> ""
5: "_6" —> ""
6: "^42" —> "²"
7: "_42" —> ""
8: "jrv" —> "J’arrive !"
9: "omw" —> "On my way!"
Y el resultado en las preferencias de Reemplazos de Texto: