Go to main content

man pages section 1: User Commands

Exit Print View

Updated: Wednesday, February 9, 2022

hexedit (1)


hexedit - view and edit files in hexadecimal or in ASCII


hexedit  [-s  |  --sector] [-m | --maximize] [-l<n> | --linelength <n>]
[-h | --help] [filename]


HEXEDIT(1)                  General Commands Manual                 HEXEDIT(1)

       hexedit - view and edit files in hexadecimal or in ASCII

       hexedit  [-s  |  --sector] [-m | --maximize] [-l<n> | --linelength <n>]
       [-h | --help] [filename]

       hexedit shows a file both in ASCII and in hexadecimal. The file can  be
       a device as the file is read a piece at a time. You can modify the file
       and search through it.

       -s, --sector
              Format the display to have entire sectors.

       -m, --maximize
              Try to maximize the display.

              Display colors.  This feature is only available if your  operat-
              ing system supports it.

       -l<n>, --linelength <n>
              Explicitly set the number of bytes to display per line to <n>.

       -h, --help
              Show the usage.

COMMANDS (quickly)
       <, > :  go to start/end of the file
       Right:  next character
       Left:   previous character
       Down:   next line
       Up:     previous line
       Home:   beginning of line
       End:    end of line
       PUp:    page forward
       PDown:  page backward

       F2:     save
       F3:     load file
       F1:     help
       Ctrl-L: redraw
       Ctrl-Z: suspend
       Ctrl-X: save and exit
       Ctrl-C: exit without saving

       Tab:    toggle hex/ascii
       Return: go to
       Backspace: undo previous character
       Ctrl-U: undo all
       Ctrl-S: search forward
       Ctrl-R: search backward

       Ctrl-Space: set mark
       Esc-W:  copy
       Ctrl-Y: paste
       Esc-Y:  paste into a file
       Esc-I:  fill

COMMANDS (full and detailed)
       o Right-Arrow, Left-Arrow, Down-Arrow, Up-Arrow - move the cursor.
       o Ctrl+F, Ctrl+B, Ctrl+N, Ctrl+P - move the cursor.
       o  Ctrl+Right-Arrow,  Ctrl+Left-Arrow, Ctrl+Down-Arrow, Ctrl+Up-Arrow -
       move n times the cursor.
       o Esc+Right-Arrow, Esc+Left-Arrow, Esc+Down-Arrow, Esc+Up-Arrow -  move
       n times the cursor.
       o Esc+F, Esc+B, Esc+N, Esc+P - move n times the cursor.
       o Home, Ctrl+A - go the beginning of the line.
       o End, Ctrl+E - go to the end of the line.
       o Page up, Esc+V, F5 - go up in the file by one page.
       o Page down, Ctrl+V, F6 - go down in the file by one page.
       o <, Esc+<, Esc+Home - go to the beginning of the file.
       o >, Esc+>, Esc+End - go to the end of the file (for regular files that
       have a size).
       o Ctrl+Z - suspend hexedit.
       o Ctrl+U, Ctrl+_, Ctrl+/ - undo all (forget the modifications).
       o Ctrl+Q - read next input character and insert it (this is useful  for
       inserting control characters and bound keys).
       o Tab, Ctrl+T - toggle between ASCII and hexadecimal.
       o  /,  Ctrl+S  - search forward (in ASCII or in hexadecimal, use TAB to
       o Ctrl+R - search backward.
       o Ctrl+G, F4 - go to a position in the file.
       o Return - go to a sector in the file if --sector is used, otherwise go
       to a position in the file.
       o Esc+L - display the page starting at the current cursor position.
       o F2, Ctrl+W - save the modifications.
       o F1, Esc+H - help (show the man page).
       o Ctrl+O, F3 - open another file
       o  Ctrl+L  - redisplay (refresh) the display (useful when your terminal
       screws up).
       o Backspace, Ctrl+H - undo the modifications made on the previous byte.
       o Esc+Ctrl+H - undo the modifications made on the previous bytes.
       o Ctrl+Space, F9 - set mark where cursor is.
       o Esc+W, Delete, F7 - copy selected region.
       o Ctrl+Y, Insert, F8 - paste (yank) previously copied region.
       o Esc+Y, F11 - save previously copied region to a file.
       o Esc+I, F12 - fill the selection with a string
       o Esc+T - truncate the file at the current location
       o Ctrl+C - unconditional quit (without saving).
       o F10, Ctrl+X - quit.

       For the Esc commands, it sometimes works to use  Alt  instead  of  Esc.
       Funny things here (especially for froggies :) egrave = Alt+H , ccedilla
       = Alt+G, Alt+Y = ugrave.

       At the bottom of the display you have the modeline (copied from emacs).
       As in emacs, you have the indications --, ** and %% meaning unmodified,
       modified and read-only. Then you have the name of the file you're  cur-
       rently editing. Next to it is the current position of the cursor in the
       file followed by the total file size. The total file size  isn't  quite
       correct for devices.
       While in --sector mode, it shows the sector the cursor is in.

       You can edit in ASCII or in hexadecimal. You can switch between the two
       with Tab. When the file is read-only, you can't edit it. When trying to
       edit  a  read-only  file, a message "File is read-only" tells you it is
       The modifications are shown in bold until they are saved.  The modeline
       indicates whether you have modified the file or not.
       When  editing  in  hexadecimal, only 0,1,...,9, a,b,...,f, A,B,...F are
       legal.  Other keys are unbound. The first time you hit an unbound  key,
       the help pops up.  It won't pop again unless you call the help directly
       (with F1).
       When editing in ascii, you can find it difficult  to  enter  characters
       like / which are bound to a function. The solution is to use the quoted
       insert function Ctrl+Q, the key after the quoted insert function is not
       processed  by hexedit (like emacs' quoted-insert, or like the \ charac-
       ter in C).

       You can search for a string in ASCII or in hexadecimal. You can  switch
       between  the  two with Tab. If the string is found, the cursor is moved
       to the beginning of the matching location. If the search failed, a mes-
       sage  "not found" tells you so. You can cancel the search by pressing a
       The search in hexadecimal is a bit confusing. You must give a hexadeci-
       mal  string  with  an even number of characters. The search can then be
       done byte by byte. If you want to search a long number (eg:  a  32  bit
       number), you must know the internal representation of that number (lit-
       tle/big endian problem) and give it the way it is in memory. For  exam-
       ple,  on an Intel processor (little endian), you must swap every bytes:
       0x12345678 is written 0x78563412 in memory and that's  the  string  you
       must give to the search engine.
       Before  searching you are asked if you want to save the changes, if the
       file is edited.

       For  more  sophisticated  search,  see   Volker   Schatz's   patch   at

   Selecting, copying, pasting, filling
       First,  select  the  part of the buffer you want to copy: start setting
       the mark where you want. Then go to the end of the  area  you  want  to
       copy  (you  can  use the go to function and the search functions). Then
       copy it. You can then paste the copied area in the current file  or  in
       another file.

       You can also fill the selected area with a string or a character: start
       choosing the block you want to fill in (set mark then move to  the  end
       of  the  block),  and call the fill function (F12). hexedit ask you the
       string you want to fill the block with.
       The code is not tuned for huge filling as it keeps the modifications in
       memory until you save them. That's why hexedit will warn you if you try
       to fill in a big block.

       When the mark is set, the selection is shown in reverse mode.
       Be aware that the copied area contains the modifications  done  at  the
       time of the copy. But if you undo the modifications, it does not change
       the content of the copy buffer. It seems obvious but it's worth saying.

       The scrolling is different whether you are in --sector mode or not.  In
       normal  mode,  the  scrolling  is  line  by  line.  In sector mode, the
       scrolling is sector by sector. In both modes, you can force the display
       to start at a given position using Esc+L.

       See attributes(7) for descriptions of the following attributes:

       |Availability   | editor/hexedit   |
       |Stability      | Uncommitted      |

       od(1), hdump(1), hexdump(1), bpe(1), hexed(1), beav(1).

       Pixel (Pascal Rigaux) <pixel@rigaux.org>,
       Home page is <http://rigaux.org/>.

       hexedit  is  Open  Source; anyone may redistribute copies of hexedit to
       anyone under the terms stated in the GNU General Public License.

       You can find hexedit at

       Anything you think could be nice...

       There are problems with the curses library given with Redhat  5.0  that
       make  hexedit think the terminal is huge. The result is that hexedit is
       not usable.

       The shortcuts work on some machines, and  not  on  others.  That's  why
       there  are  many  shortcuts  for each function. The Ctrl+Arrows and the
       Alt+. do not work work as they should most of the time.  On  SUNs,  you
       must  do  Ctrl+V-Ctrl+V  instead  of Ctrl+V (!); and the Alt key is the
       diamond one.

       While searching, it could be interesting to  know  which  position  the
       search  has  reached.  It's always nice to see something moving to help

       The hexadecimal search could be able to search modulo 4 bits instead of
       8 bits.  Another feature could be to complete padd odd length hexadeci-
       mal searches with zeros.

       I have an example where the display is completely screwed up. It  seems
       to  be  a  bug  in ncurses (or maybe in xterm and rxvt)?? Don't know if
       it's me using ncurses badly or not... It seems to happen  when  hexedit
       leaves  only  one  space at the end of the lines... If anyone has a (or
       the) solution, please tell me!

       If you have any problem with the program (even a small one), please  do
       report it to me. Remarks of any kind are also welcome.

       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-

       This     software     was    built    from    source    available    at
       https://github.com/oracle/solaris-userland.   The  original   community
       source was downloaded from  https://github.com/pixel/hexedit.git.

       Further information about this software can be found on the open source
       community website at http://merd.sourceforge.net/pixel/hexedit.html.

                                 12 July 1998                       HEXEDIT(1)