Provided by: tweak_3.02-4_amd64 bug

NAME

       tweak - efficient hex editor

SYNOPSIS

       tweak [-l | -f] [-e] [-w width] [-o offset] filename

DESCRIPTION

       tweak is a hex editor. It allows you to edit a file at very low level, letting you see the
       full and exact binary contents of the file. It can be useful for  modifying  binary  files
       such  as  executables,  editing disk or CD images, debugging programs that generate binary
       file formats incorrectly, and many other things.

       Unlike simpler hex editors, tweak possesses a fully functional insert mode.  This  is  not
       useful  when editing many of the types of file described above, but can be useful in other
       situations. Also, an insert mode makes it easy to use tweak to construct  new  files  from
       scratch.

       When you open a file in tweak, you can expect to see the screen contents looking something
       like this:

       00000000   7F 45 4C 46 01 01 01 00   .ELF....
       00000008   00 00 00 00 00 00 00 00   ........
       00000010   02 00 03 00 01 00 00 00   ........
       00000018   D0 8E 04 08 34 00 00 00   ....4...
       00000020   2C EF 01 00 00 00 00 00   ,.......

       The central column shows you the hexadecimal value of  each  byte  in  the  file  you  are
       editing.  The  column  on  the  right shows the ASCII interpretation of those bytes, where
       applicable. In the example above, the sequence 45 4C 46 on the first line translates  into
       the  ASCII upper-case letters `ELF', but the subsequent sequence 01 01 01 00 does not have
       any printable ASCII representation and so the right-hand column simply prints dots.

       The column on the left shows the position within the file of the start of each row.

       In fact, when you start tweak, you will usually see 16 bytes of the file per row, not 8 as
       shown  above.  However,  this is configurable if your screen is narrower - or wider - than
       the usual 80 columns, or if the file you are editing consists  of  fixed-size  records  of
       some other size.

       By  default,  tweak  does not load its entire input file into memory. Instead, it loads it
       lazily, reading from the file on disk when you request a view of a part  of  the  file  it
       doesn't have stored. When you modify the file, it stores your modifications in memory, but
       continues to refer to the original disk file for the parts  you  have  not  touched.  This
       means  you  can  edit  extremely  large  files  (for  example,  entire  CD images) without
       difficulty; opening such a file is  instantaneous,  making  modifications  causes  tweak's
       memory  usage to grow with the size of the changes rather than the size of the whole file,
       and only when saving the altered version will tweak have to read through the entire  input
       file to write the output.

       However,  this  mode  of  operation has a disadvantage, which is that if the input file is
       modified by another program while tweak is running, tweak's internal data structures  will
       not be sufficient to keep track, and it is likely that the file written out will contain a
       mixture of the old and new contents of the input file. Therefore,  you  can  disable  this
       lazy loading if you need to; see the -e option below.

OPTIONS

       This section lists the command-line options supported by tweak.

       -f     Runs  tweak  in  `fix'  mode, i.e. with the insert function entirely disabled. This
              might be useful if you are editing a file in which the insert mode  is  of  no  use
              (executables, for example, tend to have strong dependencies on precise file offsets
              which make it almost  impossible  to  insert  data  in  one  without  rendering  it
              unusable) and you want to avoid turning it on by mistake.

       -l     Runs tweak in `look' mode. In this mode tweak does not allow you to modify the data
              at all; it becomes simply a tool for examining a file in detail.

       -e     Runs tweak in `eager' mode. In this mode tweak will read its entire input file when
              starting  up.  This  causes  it  to  take  up more memory, but means that it has no
              dependency on the input file remaining unmodified, and other programs can alter  it
              if they need to without causing trouble.

       -w width
              Specifies the number of bytes tweak will display per line. The default is 16, which
              fits neatly in an 80-column screen.

       -o offset
              If this option is specified, tweak will ensure that the given file offset occurs at
              the  start  of  a line. For example, if you loaded a file using the options -w 8 -o
              0x13, you might see a display a bit like this:

              00000000                  7F 45 4C        .EL
              00000003   46 01 01 01 00 00 00 00   F.......
              0000000B   00 00 00 00 00 02 00 03   ........
              00000013   00 01 00 00 00 D0 8E 04   ........
              0000001B   08 34 00 00 00 2C EF 01   .4...,..

              By putting only three bytes of the file on the very first line, tweak has  arranged
              that  the  file  offset 0x13 (19 in decimal) appears at the beginning of the fourth
              line.

              You might use this option if you knew you were  editing  a  file  in  a  particular
              format.  For  example, if your file contained a 53-byte header followed by a series
              of 22-byte records, you might find it useful to specify the options -w  22  -o  53.
              This  would arrange that after the header, each individual record of the file would
              appear on precisely one line of tweak's display.

       -D     If this option is specified, tweak will not attempt to load and edit a file at all,
              but  will  simply  produce  its default .tweakrc file on standard output. This is a
              useful way to give yourself a starting point if you  want  to  begin  reconfiguring
              tweak's keyboard layout.

KEYS

       This section describes all the editing keys supported by tweak by default. The default key
       bindings for tweak are basically Emacs-like.

   Movement keys
       The Emacs cursor movement keys  should  all  work,  and  their  counterparts  in  ordinary
       function keys ought to work too:

             ^P and ^N go to the previous and next lines; Up and Down should do the same.

             ^B and ^F go back and forward one character; Left and Right should do the same.

             M-v  and ^V go up and down one screenful at a time; Page Up and Page Down should do
              the same.

             ^A and ^E go to the beginning and end of the line; Home and End should do the same.

       Press M-< and M-> go to the beginning and end of the file.

       Press ^X g to go to a particular byte position in the file; you will be asked to  type  in
       the  position  you  want. You can enter it in decimal, or as a hex number with `0x' before
       it.

   Editing keys
       Press Return to move the cursor between the hex  section  of  the  screen  and  the  ASCII
       section.

       When in the hex section, you can enter hexadecimal digits to alter data; when in the ASCII
       section, you can directly type ASCII text.

       In ASCII mode, you can also press ^Q to literally quote  the  next  input  character;  for
       example,  if  you  want  to  insert  a  Control-V,  you  can  press  ^Q^V  and  tweak will
       automatically insert the byte value 0x16.

       Press ^X^I, or the Insert key if you have one, to toggle between overwrite mode and insert
       mode.  In  insert  mode,  typing  hex  or ASCII input will insert new bytes containing the
       values you provide. Also, you can then press Backspace to delete the byte to the  left  of
       the cursor, or ^D or Delete to delete the byte under the cursor.

   Cut and paste
       Press  ^@ (this character may be generated by the key combination Control-@, or Control-2,
       or Control-Space) to mark the end of a selection region. After  you  do  this,  the  bytes
       between  that  mark  and  the  cursor  will  be highlighted. Press ^@ again to abandon the
       selection.

       Press M-w while a selection is active to copy the selected region into tweak's cut buffer.

       In insert mode, you also have the option  of  pressing  ^W  to  cut  the  selected  region
       completely out of the file and place it in the cut buffer.

       Finally, press ^Y to paste the cut buffer contents back into the file (this will overwrite
       or insert depending on the current mode).

   Searching
       Press ^S to search for a byte sequence. You will be asked to enter some text to search for
       on the bottom line of the screen. You can type this text in ASCII, or as a sequence of hex
       byte values prefixed with backslashes (\). For example, if you wanted to  search  for  the
       byte  value  5  followed  by  the  word  `hello', you might enter \05hello. If you want to
       specify a literal backslash character, you can either enter it in hex (as \5C), or  simply
       double it on input (\\).

       Press ^R to search backwards instead of forwards from the current cursor position.

       Since tweak deals in pure binary data, searches are always case-sensitive.

   Controlling the display
       If  you  press  ^X  w,  you  will be asked to enter a new display width. This has the same
       effect as passing the -w option on the command line. Similarly, pressing ^X o  allows  you
       to enter a new display offset, equivalent to the -o option.

       By  default,  the current file position and file size are displayed on tweak's status line
       in hex. If you prefer them in decimal, you can press ^X x or ^X h to toggle  them  between
       hex and decimal.

   Miscellaneous
       Press  ^L  to  redraw  the  screen  and recentre the cursor. Press ^Z to suspend tweak and
       return temporarily to the shell.

       Press ^X^S to save the file you are editing.

       Press ^X^C to exit tweak. (If you do this with changes unsaved, you will be asked  whether
       you want to save them.)

CONFIGURATION FILE

       tweak's  keyboard bindings are configurable. It will attempt to read a file from your home
       directory called .tweakrc, and if it finds one it will use the keyboard bindings described
       in it. If it does not find one, it will use its internal default bindings.

       Most  of  the directives in .tweakrc are of the form `bind command-name key'. For example,
       `bind exit ^X^C'. Additionally, there are two other directives, width  and  offset,  which
       give the default display parameters if no -w and -o options are specified.

       The  easiest  way  to learn about the .tweakrc file is to begin by having tweak output its
       internal default one:

       tweak -D > $HOME/.tweakrc

       Then you can read the default file, learn the tweak internal command names, and  edit  the
       file to do what you want.

BUGS

       This man page probably ought to contain an explicit list of internal command names, rather
       than simply referring you to the default .tweakrc.