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^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>
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.
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.
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.
Transform vim into a hex editor by doing [escape] :%!xxd
. Then search for 0x1B (/1B
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With