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 binFile000000 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选项要求以十六进制显示文件中的地址
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)