Hexa dans vi

Yep, il y a un "mode" hexa dans vi. J'ai tatonné un peu avant de l'utiliser correctement. On entre dans le mode hexa par l'incantation  :%!xxd  qui grosso modo signifie "applique la commande xxd sur l'ensemble du fichier". xxd c'est la commande UNIX pour faire un hexdump.Dès lors le contenu ressemble à ça :

0000000: 4f6e 2079 2065 6e74 7265 2070 6172 206c  On y entre par l
0000010: 2769 6e63 616e 7461 7469 6f6e 2020 3a25  'incantation  :%
0000020: 2178 7864 2020 7175 6920 6772 6f73 736f  !xxd  qui grosso
0000030: 206d 6f64 6f20 7369 676e 6966 6965 2022   modo signifie "
0000040: 6170 706c 6971 7565 206c 6120 636f 6d6d  applique la comm
0000050: 616e 6465 2078 7864 2073 7572 206c 2765  ande xxd sur l'e
0000060: 6e73 656d 626c 6520 6475 2066 6963 6869  nsemble du fichi
0000070: 6572 222e 2078 7864 20e9 7461 6e74 206c  er". xxd .tant l
0000080: 6120 636f 6d6d 616e 6465 2075 6e69 7175  a commande uniqu
0000090: 6520 706f 7572 2066 6169 7265 2075 6e20  e pour faire un
00000a0: 6865 7864 756d 702e 0a                   hexdump..

Vous avouerez que c'est quand même plus lisible qu'un bête fichier ascii. Après il est possible de modifier comme on veut du moment qu'on respecte le format dump hexa. C'est au moment de sauvegarder qu'il faut bien comprendre ce qu'on fait. Si on sauvegarde directement, genre :wq ou ZZ ou même :x (soyons fous), alors ce qu'on sauve c'est le dump hexa. Si on veut sauver le fichier dans son format originel il faut penser à reconvertir le dump d'abord. Rien de plus simple :%!xxd -r avec le -r pour dire "reverse".

On peut aussi faire le hexdump de quelques lignes seulement, genre :.,.+3!xxd les modifs doivent alors particulièrement bien respecter le compte des caractères sous peine de défaut d'alignement au moment de reverser le hexdump.

Bref, une incantation toute simple mais bien prateek, qui évite d'installer des éditeurs hexa inutilement.

Geek de comptoir

Les bières, j'en bois 12 et j'en ROT13.
et j'en pisse 14.

Les co-auteurs se reconnaitront (ou pas).