Utilisez vim pour rechercher par code hexadécimal

Je dois nettoyer un fichier. Nous avons un analyseur xml qui s'exécute sur celui-ci qui échoue en raison d'un caractère d'échappement (0x1B) dans le fichier. Comment puis-je utiliser vim pour trouver où se trouve ce caractère dans le fichier afin de pouvoir le supprimer?

Exemple de fichier:

<?php
echo "Hello, world.n";                           
?>

Après conversion:

0000000: 0a3c 3f70 6870 0a65 6368 6f20 2248 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.n";.?
0000020: 3e0a  

Donc je supprime un char: (dans cet exemple, le 'H')

0000000: 0a3c 3f70 6870 0a65 6368 6f20 22 656c  .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f  lo, world.n";.?
0000020: 3e0a

Remarquez que la première ligne n'est plus assez large. Quand je le convertit, je reçois:

^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@> 
37
demandé sur David Oneill 2010-02-15 17:00:33

2 réponses

Recherche (par exemple en utilisant /) pour \%x1b.

Vous pouvez également taper des caractères de contrôle, y compris escape, dans la ligne de commande en les précédant avec Ctrl-V . Donc, de type /, Ctrl-V, Esc, Saisissez.

47
répondu Nefrubyr 2013-07-21 17:04:04

Transformer vim dans un éditeur hexadécimal en faisant [escape] :%!xxd. Ensuite, recherchez 0x1B (/1B).

10
répondu Alexander Gessler 2010-02-15 14:04:59