VIM使用系列:二进制文件编辑

VIM使用系列:二进制文件编辑,第1张

VIM使用系列:二进制文件编辑vim一般是作为文本编辑工作,主要如代码编写,编辑二进制文件一般不再vim的功能范畴。不过在linux系统中偶尔也会碰到一些二进制文件,如二进制的数据文件等,在一定范围内也可以使用vim进行查看和修改。查看和定位打开一个二进制文件时,要保证

Vim

别把它那些聪明的窍门用错地方,启动

Vim

时加上

-b

参数:1vim

-b

datafile这个参数设定了

'binary'

选项。其作用是排除所有的意外副作用。例如,'textwidth'设为零,免得文本行给擅自排版了。并且,文件一律以

Unix

文件格式读取。二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运行出问题。用

R

命令进入替换模式。文件里的很多字符都是不可显示的。用

Hex

格式来显示它们的值:1:set

display=uhex另外,也可以用命令

ga

来显示光标下的字符值。当光标位于一个

字符上时,该命令的输出看起来就像这样:

27,

Hex

1b,

Octal

033

文件中也许没那么多换行符。你可以关闭

'wrap'

选项来获得总览的效果:

:set

nowrap要发现你在文件中的当前字节位置,请用这个命令:

g

CTRL-G其输出十分冗长:

Col

9-16

of

9-16

Line

277

of

330

Word

1806

of

2058

Byte

10580

of

12206

最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了

'fileformat'选项导致换行符字节不同的影响。要移到文件中某个指定的字节,请用

go

命令。例如,要移到字节

2345:

2345go使

XXD一个真正的二进制编辑器用两种方式来显示文本:

二进制和十六进制格式。你可以在

Vim里通过转换程序

xxd

来达到这效果。该程序是随

Vim

一起发布的。首先以二进制方式编辑这个文件:

vim

-b

datafile现在用

xxd

把这个文件转换成十六进制:

:%!xxd文本看起来像这样:0000000:

1f8b

0808

39d7

173b

0203

7474

002b

4e49

....9....tt.+NI0000010:

4b2c

8660

eb9c

ecac

c462

eb94

345e

2e30

K,.`.....b..4^.00000020:

373b

2731

0b22

0ca6

c1a2

d669

1035

39d9

7'1......i.59.现在你可以随心所欲地阅读和编辑这些文本了。

Vim

把这些信息当作普通文本来对待。修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。最后,用下面的命令把它转换回来:

:%!xxd

-r只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。PS:当然对于二进制文件的查看linux系统中有多个更好的可用工具,常用的如:od工具:dump

files

in

octal

and

other

formatsxxd工具:make

a

hexdump

or

do

the

reverse.hexdump工具:ASCII,

decimal,

hexadecimal,

octal

dump.

查看二进制文件,用od或hexdump命令。

$ od -tx1 -tc -Ax binFile

000000  61  62  63  64  65  31  32  33  34  35  61  62  63  64  65  31

         a   b   c   d   e   1   2   3   4   5   a   b   c   d   e   1

000010  32  33  34  35  61  62  63  64  65  31  32  33  34  35  61  62

         2   3   4   5   a   b   c   d   e   1   2   3   4   5   a   b

000020  63  64  65  31  32  33  34  35  0a

         c   d   e   1   2   3   4   5  \n

000029

-tx1选项表示将文件中的字节以十六进制的形式列出来,每组一个字节(类似hexdump的-c选项)

-tc选项表示将文件中的ASCII码以字符形式列出来(和hexdump类似,输出结果最左边的一列是文件中的地址,默认以八进制显示)

-Ax选项要求以十六进制显示文件中的地址


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11711872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存