Der BVI (Binary-VI) ist ein Editor für Binärfiles. Seine Kommandos sind weitgehend an den Standard UNIX Editor VI(1) angelehnt. Der Bildschirm ist in einen hexadezimalen und einen ASCII-Bereich geteilt. Einige zusätzliche Kommandos wurden zugefügt, einige Kommandos adaptiert und einige Kommandos, die bei Binärfiles keinen Sinn machen, wurden weggelassen. Für eine Gesamtübersicht siehe Manual Page BVI(1).
Die normalen Textsuchkommandos sind auch vorhanden, wobei zusätzlich ein Return, Linefeed oder NULL im Suchstring aufscheinen darf (\n \r oder \0).
Die Kommandos w, W, b, B (nächstes oder vorhergehendes Wort) wurden insoweit abgeändert, daß sie eher dem STRINGS(1) - Kommando entsprechen, also in einem Binärfile Textstrings suchen. Dabei sucht W und B nach Strings, die mit einem \0 oder \n enden, w und b sucht nach Strings, die mit einem beliebigen, nicht druckbaren Zeichen enden. Die Stringlänge beträgt 4 Zeichen, wobei mit ":set wordlength=x" die Stringlänge auf x Zeichen eingestellt werden kann.
Der Bildschirm ist in einen HEX und einen ASCII-Bereich aufgeteilt, wobei jederzeit mit der TAB - Taste von einem Bereich in den anderen gewechselt werden kann (auch im Eingabemodus). Es kann also bei der Eingabe zwischen normalen ASCII-Zeichen und Hex-Eingabe hin- und hergesprungen werden.
Am unteren Bildrand befindet sich eine Statusanzeige, welche die Adresse des Bytes, auf welchem der Cursor momentan steht, anzeigt. Außerdem wird das Byte in oktaler, hexadezimaler, dezimaler und ASCII-Repräsentation anzeigt. Die ASCII-Anzeige kann von DOS-Style (27 entspricht ^Z) auf UNIX-Style entsprechend Manual Page ASCII(7) umgeschaltet werden (27 entspricht SUB). Kommando ist ":set unixstyle". Die Statusanzeige kann mit ":set noshowmode" ausgeschaltet werden.
Die Kommandos :a (append), :c (change) und :i (insert) können benutzt werden, um ein oder mehrere Bytes in ASCII, binärer, dezimaler, hexadezimaler oder oktaler Schreibweise einzugeben (a, b, d, h oder o). Es können mehrere (Bildschirm) Zeilen eingegeben werden. Das Kommando wird beendet, sobald eine Zeile, die nur aus einem Punkt besteht, eingegeben wird.
Beispiel:
Zu beachten ist, daß kein Einzelwert den maximalen Byte-Wert (255) überschreiten darf, da sonst die Eingabe abgebrochen wird. Das Drücken der RETURN - Taste führt zu keinem "RETURN" - Zeichen in der Datei, im ASCII - Modus können allerdings die Sonderzeichen \n, \r, \t und \0 benutzt werden.:i b 1 1001 010101 1111 11111 1010 1 0 1 .
5ySPACE | kopiert 5 Zeichen in den Yank-Buffer |
o | überschreibt an Cursor - Position die folgenden Zeichen mit dem Inhalt des Yank- oder Delete - Puffers |
p | fügt an der Cursor - Position den Inhalt des Yank- oder Delete - Puffers ein. |
P | fügt den Inhalt des Yank- oder Delete - Puffers am Dateiendes an. |
Das Kommando ":r filename" fügt das angegebene File nicht an der Cursor- Position sondern am Dateiende an.
:rl n | Rotiert Bits links | n ist eine Zahl zwischen 1 und 7 |
:rr n | Rotiert Bits rechts | |
:sl n | Schiebt Bits links | |
:sr n | Schiebt Bits rechts | |
:and i | Und Verknüpfung | i ist eine Zahl zwischen 0 und 255 |
:or i | Oder Verknüpfung | |
:xor i | Exklusiv-oder Verknüpfung | |
:not | Negiert Bytewert | |
:neg | Zweier-Komplement |
:100,500and 01A RETURN
:03FA,01000or 00001000 RETURN
:.rr 3 RETURN
:'a,$sl 1 RETURN