博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vim编辑二进制文件
阅读量:4159 次
发布时间:2019-05-26

本文共 1232 字,大约阅读时间需要 4 分钟。

from: 

vim编辑二进制文件 Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读

取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,

其它的就跟原来那个一模一样。

要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:


vim -b datafile


这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'

设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。


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

行出问题。用 "R" 命令进入替换模式。


文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:


:set display=uhex


另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 
<Esc>
 字符上时,

该命令的输出看起来就像这样:


<^[> 27, Hex 1b, Octal 033 


文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:


:set nowrap



字 节 位 置


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


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.+NI 

0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 

0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. 


现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。

修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。

最后,用下面的命令把它转换回来:


:%!xxd -r


只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。

转载地址:http://kybxi.baihongyu.com/

你可能感兴趣的文章
vue项目使用安装sass
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>