En ocasiones, durante la edición de un fichero de texto con el editor vim, podemos encontrarnos con la necesidad de introducir, buscar y/o reemplazar caracteres que no existen en nuestro teclado, tales como æ, å, ě, … o bien con códigos hexadecimales que no corresponden a símbolos gráficos, tales como los caracteres de control ^A, ^B, … o códigos hexadecimales entre 0x7F y 0xFF.
En este artículo se explican algunas de las posibilidades que ofrece vim para trabajar con estos caracteres
Obtener el código hexadecimal de un carácter:
Si queremos averiguar el código hexadecimal de un determinado carácter presente en el fichero que estamos editando, basta con colocar el cursor sobre el mismo, y pulsar “ga”. En la parte inferior de la pantalla aparece una línea con la codificación hexadecimal y octal del mismo. Por ejemplo:
1 2 3 |
<Ѳ> 1138, Hex 0472, Octal 2162 |
en este ejemplo, vemos que el carácter Ѳ se codifica com Hex 0472 (en codificación utf8)
Insertar carácter por su código hexadecimal o unicode:
Para insertar un carácter por su código hexadecimal pulsamos Control-V, después el carácter x, y a continuación el código del carácter que queremos introducir. Por ejemplo:
1 2 3 |
^Vx9d |
Si queremos insertar un carácter por su código unicode, pulsamos Contro-V seguido del carácter u, y a continuación el código unicode. Por ejemplo, para introducir el carácter Ѳ:
1 2 3 |
^Vu0472 |
Buscar un carácter por su código hexadecimal o unicode:
En una expresión de búsqueda o sustitución podemos buscar un carácter especificando su código hexadecimal de la forma “\%xhh”, en donde hh es el código buscado. Por ejemplo, para buscar el carácter con código hexadecimal 9d:
1 2 3 |
/\%x9d |
De la misma forma, podemos buscar un código unicode de la forma “\%uhhhh”. Por ejemplo, para buscar el carácter Ѳ:
1 2 3 |
/\%u0472 |
Digraphs
Los símbolos más comunes se pueden insertar pulsando Control-K seguido de una combinación de dos letras (digraph) que corresponde al símbolo deseado. Por ejemplo, para introducir el símbolo de la libra esterlina £, pulsamos ^KPd. Para introducir el carácter ä, pulsamos ^Ka:.
También se puede habilitar el modo “digraph” con el comando “:set digraph”. Con este modo habilitado, el caracteres acentuados se pueden introducir también utilizando la tecla backspace. Por ejemplo, para introducir el carácter ä, pulsamos a<BS>: ( “a” + backspace + “:” ). Para introducir el carácter ê, pulsamos “e” + backspace + “>”
Por último, se pueden listar todos los digraphs que reconoce el editor, con el comando “:digraphs”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
:digraphs NU ^@ 10 SH ^A 1 SX ^B 2 EX ^C 3 ET ^D 4 EQ ^E 5 AK ^F 6 BL ^G 7 BS ^H 8 HT ^I 9 LF ^@ 10 VT ^K 11 FF ^L 12 CR ^M 13 SO ^N 14 SI ^O 15 DL ^P 16 D1 ^Q 17 D2 ^R 18 D3 ^S 19 D4 ^T 20 NK ^U 21 SY ^V 22 EB ^W 23 CN ^X 24 EM ^Y 25 SB ^Z 26 EC ^[ 27 FS ^\ 28 GS ^] 29 RS ^^ 30 US ^_ 31 SP 32 Nb # 35 DO $ 36 At @ 64 <( [ 91 // \ 92 )> ] 93 '> ^ 94 '! ` 96 (! { 123 !! | 124 !) } 125 '? ~ 126 DT ^? 127 PA <80> 128 HO <81> 129 BH <82> 130 NH <83> 131 IN <84> 132 NL <85> 133 SA <86> 134 ES <87> 135 HS <88> 136 HJ <89> 137 VS <8a> 138 PD <8b> 139 PU <8c> 140 RI <8d> 141 S2 <8e> 142 S3 <8f> 143 DC <90> 144 P1 <91> 145 P2 <92> 146 TS <93> 147 CC <94> 148 MW <95> 149 SG <96> 150 EG <97> 151 SS <98> 152 GC <99> 153 SC <9a> 154 CI <9b> 155 ST <9c> 156 OC <9d> 157 PM <9e> 158 AC <9f> 159 NS 160 !I ¡ 161 Ct ¢ 162 Pd £ 163 Cu ¤ 164 Ye ¥ 165 BB ¦ 166 SE § 167 ': ¨ 168 Co © 169 -a ª 170 << « 171 NO ¬ 172 -- 173 Rg ® 174 'm ¯ 175 DG ° 176 +- ± 177 2S ² 178 3S ³ 179 '' ´ 180 My µ 181 PI ¶ 182 .M · 183 ', ¸ 184 1S ¹ 185 -o º 186 >> » 187 14 ¼ 188 12 ½ 189 34 ¾ 190 ?I ¿ 191 A! À 192 A' Á 193 A> Â 194 A? Ã 195 A: Ä 196 AA Å 197 AE Æ 198 C, Ç 199 E! È 200 E' É 201 E> Ê 202 E: Ë 203 I! Ì 204 I' Í 205 I> Î 206 I: Ï 207 D- Ð 208 N? Ñ 209 O! Ò 210 O' Ó 211 O> Ô 212 O? Õ 213 O: Ö 214 *X × 215 O/ Ø 216 U! Ù 217 U' Ú 218 U> Û 219 U: Ü 220 Y' Ý 221 TH Þ 222 ss ß 223 a! à 224 a' á 225 a> â 226 a? ã 227 a: ä 228 ... |
En la lista que aparece:
- los dos primeros caracteres son los que hay que introducir a continuación de Ctrl-K.
- A continuación se representa el carácter resultante
- Por último se presenta el código decimal Unicode correspondiente
Como vemos, hay varios cientos de caracteres, entre los cuales se encuentran los caracteres de control con códigos hexadecimales 0x00 a 0x1F, los caracteres no gráficos con códigos hexadecimales entre 0x7F y 0xFF, y los caracteres más comunes correspondientes a símbolos de moneda (libra, yen, …), la mayoría de los caracteres no ASCII utilizados en idiomas occidentales, y otros símbolos de uso común.
Recargar un fichero abierto, leyéndolo como utf8
Normalmente, vim detecta la codificación del fichero y lo abre adecuadamente. Pero puede ocurrir que un fichero utf8 contenga algún carácter de control. vim interpreta la codificación de este fichero como “Non-ISO extended-ASCII text” y los caracteres utf8 no se representan correctamente. En este caso, podemos forzar a vim a recargar el fichero, interpretándolo como utf8, con el comando
1 2 3 |
:e! ++enc=utf8 |
Referencias
Artículos relacionados
—