Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use vim to search by hex code

Tags:

vim

search

hex

I need to clean up a file. We have an xml parser that runs on it that is failing due to an escape character (0x1B) in the file. How do I use vim to find where in the file that character is so I can remove it?

Example file:

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

After 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   

So I delete a char: (in this example, the '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 

Notice how the first line isn't wide enough anymore. When I convert it back, I get:

^@<?php echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>  
like image 842
David Oneill Avatar asked Feb 15 '10 14:02

David Oneill


People also ask

How do I view a text file in hex mode?

There are three ways to open a file in the hex editor: Right click a file -> Open With -> Hex Editor. Trigger the command palette (F1) -> Open File using Hex Editor. Trigger the command palette (F1) -> Reopen With -> Hex Editor.

How to go to next match in Vim?

The most useful shortcut in Vim, IMHO, is the * key. Put the cursor on a word and hit the * key and you will jump to the next instance of that word.


2 Answers

Search (e.g. using /) for \%x1b.

You can also type control characters, including escape, into the command line by preceding them with Ctrl-V. So type /, Ctrl-V, Esc, Enter.

like image 128
Nefrubyr Avatar answered Oct 22 '22 06:10

Nefrubyr


Transform vim into a hex editor by doing [escape] :%!xxd. Then search for 0x1B (/1B).

like image 35
Alexander Gessler Avatar answered Oct 22 '22 06:10

Alexander Gessler