Ene 172015
 

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:

<Ѳ> 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:

^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 Ѳ:

^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:

/\%x9d

De la misma forma, podemos buscar un código unicode de la forma “\%uhhhh”. Por ejemplo, para buscar el carácter Ѳ:

/\%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”:

: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

:e! ++enc=utf8

Referencias

Artículos relacionados

 Publicado por en 12:32 pm

 Deja un comentario

(requerido)

(requerido)