Inserting or deleting bytes can be dangerous on some kind of files, because binary files are mostly executables, database files or maybe graphic files. So you must not shift the remaining bytes to another address. Therefor commands for inserting or deleting bytes are disabled by default. You can use the r command to change a single byte, or the R command to replace multiple characters. You can use a numeric prefix for both commands.
You can add characters at the end of the file using the A command. If you start with an empty file, you can create a binary file from scratch. If the cursor is in the ASCII section of the screen and you type 100AxESC, you create a file which contents 100 x'es.
The D command can be used to truncate a file at a certain position. Since there are no lines in a binary file, the D command deletes to end of file.
If you have to edit a binary file where it does not matter to move bytes to a different address, you can enable the insert and delete commands by typing :set memmove. Now you are able to use the i command for inserting bytes, the x or X command to delete the byte over or before the cursor and those types of d commands, which does not rely on text lines (e.g. dSPACE, dfC, d/xyz, d$, d'a, dnG).
All edits can be undone by pressing the u key.
Using ex (colon) commandsThe edit commands of the ex editor are usually not available in standard vi implementations (:i[nsert], :a[ppend] and :c[hange]). In bvi they are available with extended options. There are five modifiers a[scii], b[inary], d[ecimal], h[exadecimal] and o[ctal] (ascii is default). Therefor you can insert, append or change data in all five representations.
A line with only a period (.) in it will terminate the command.:a d 0 12 3 128 255 17 0 0 255 255 23 24 25 128 6 6 6 .
You must not type values greater than a byte value (255 decimal, FF hex). This causes an abandon of the command.
Pressing the RETURN key does not insert a newline - character into the file. If you use :i a (insert ascii) you can use the special characters \n, \r, \t and \0.
An additional advantage is, that all typed bytes are inserted into the file at once. If you insert characters in vi - mode, for every byte typed, the whole remaining file has to be moved one position backwards.
Last update: June 1st 2000 by Gerhard Bürgmann, Purkersdorf/Austria
Have a look at "Webdesign Wien"