On Feb 8, 2:25 pm, Peter de Ridder <[email protected]> wrote:
> Hi,
>
> Using vim do edit binary files isn't always that easy. With
> display+=uhex you can make unprintable characters show as hex, but the
> printable characters are still shown as normal characters. Using xxd
> so convert a file to hex gives a nice view of the file in both hex and
> printable characters. But editing is still a bit difficult even with
> hex editing helper scripts. e.g. insering or removing data isn't easy
> since all the xxd offsets number need to be renumbered.
>
> To make it easier for hex editing in vim I try the split hex editing
> in different parts which could be added to vim and be setup with a
> command e.g. :hexthis (like :diffthis for diffing). The parts I came
> up with are:
> - Show all characters (printable or unprintable) as hex.
> - Show unprintable characters as a dot.
> - Number lines with byte offsets.
> - Columnize every x bytes.
> - Enter characters as hex.
> - Join lines over eol and make eol editable as if it was a character.
> - Other features like vsplit and scrollbind are already present.
>
> I know some if these options can be either impossible or to hard to be
> reasonable but I put them in the list to be complete.
> I started on implementing a few of the parts. I added preliminary
> patches for them.
>
> I'm providing the preliminary patches so other people can test them,
> tell what is missing, give pointers in to right direction or provide
> ideas on further improvements. I'm interested in using these feature
> myself maybe others are interested too and maybe these can become part
> of the newer versions of vim, when completed.
>
> I'll explain the different parts a bit further:
> - Show all characters (printable or unprintable) as hex.
> Preliminary patch: hex-displaymode.patch
> A per window setting to display all characters as hex, making all
> characters 2 display cells wide. This can be used as main hex editing
> window. Like the hex data part of xxd. The patch adds window option
> 'displaymode'='hex'.
> - Show unprintable characters as a dot.
> Preliminary patch: hex-displaymode.patch
> A per window setting to display all unprintable characters as dots,
> making all characters 1 display cell wide. This way this can be setup
> with scrollbinding to the main hex editing window and have half the
> width. Since the main window will have characters of 2 wide and this
> window will have characters of 1 wide, so the wrapping and such will
> match and scrollbinding can be used. This setting is like the right
> printable character side of xxd. The patch adds window option
> 'displaymode'='dot'.
> - Number lines with byte offsets.
> Preliminary patch: hex-hexnumber.patch
> A setting like 'number' and the recent 'relativenumber' but instead of
> line number it shows line byte offsets. The +byte_offset feature
> provides the internals for this. Line the first column if xxd. The
> patch adds window option 'hexnumber'.
> - Columnize every x bytes.
> Experimental patch: hex-columnview.patch
> Columnize characters in groups of x bytes or multiple groups. And
> break a line at x bytes neither by inserting eol or dependant on the
> window width. Gives a better for of data in (mostly) the
> 'displaymode'='hex' window. The patch adds
> 'columnview'={break},{count},{count},... ('columnize' might be a
> better name?)
> - Enter characters as hex.
> Type only [0-9a-fA-F] to enter data. This could be handled by a script
> and doesn't need to be part of the c code base.
> - Join lines over eol and make eol editable as if it was a character.
> Make the eol act like it as a normal character and let the line breaks
> be fully handled by either 'wrap' or 'columnview'. As for now I don't
> see any option in vim which does something similar and it seems very
> hard to me if not impossible without breaking the core structure. I
> could also live without this part since the other parts would be a
> good enough improvement already. vim is still a text editor and not a
> full featured hex editor.
>
> Patches:
> hex-displaymode.patch: Base patch adding the +hex feature and the
> 'displaymode' window option. This should work on vim7.3 (It is based
> on 7.3-112).
> hex-hexnumber.patch: Aditional patch to add 'hexnumber' window option.
> hex-displaymode.patch needs to be applied.
> hex-columnview.patch: Aditional patch adding experimental window
> option 'columnview', this is know to break. hex-hexnumber.patch needs
> to be applied. I might have started in the wrong direction with this
> implementation, so I might need to start over with this one.
>
> Regards,
> Peter
>
>  hex-displaymode.patch
> 22KViewDownload
>
>  hex-hexnumber.patch
> 31KViewDownload
>
>  hex-columnview.patch
> 22KViewDownload

Editing in vim is difficult, so I chose to edit in vim style:

http://bvi.sourceforge.net/

I have compiled this for linux and mac, works well.

-Bill

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui