Vim 十六进制编辑

开始十六进制编辑

要在 vim 中开始十六进制编辑,可通过如下命令

:e ++bin ++enc=ansi | %!xxd -g1
:set ft=xxd

“|”是 vim 多个命令的分隔符,这实际上是三个命令。

 

其中最关键的命令是

%!xxd -g1

它是对当前编辑的文件调用命令“xxd -g1”然后编辑该命令的输出,需要注意的是被编辑的文件没有变,如果此时保存的话,将会这些十六进制信息对应的文本替换原文件。

 

“xxd -g1”的作用是以单个字节为单位按十六进制方式列出文件内容。

 

再看第一条命令:

e ++bin ++enc=ansi

 作为文本编辑器,vim 打开一个文件默认是以文本的方式,而我们之所以要进行十六进制编辑通常是因为文件是二进制的,若以文本方式编辑会是有损转换。所以需要以二进制方式重新加载文件,即命令“e ++bin”,“++bin”参数指示二进制方式。同样道理为避免编码转换带来的损失,需以 8bit 编码识别文件,“++enc=ansi”参数指示识别 ISO-8859-1(vim 中别名 ansi、latin1)编码,该编码是一种 8bit 编码。此后再调用第二个命令“%! xxd -g1”转十六进制则即是无损转换。

 

第三条命令:

set ft=xxd

 的作用是切换语法类型为 xxd,以刷新语法高亮。如果未执行该命令,语法高亮还会按照之前的文件类型,可能看起来会是混乱的。


结束十六进制编辑

上文提到了,再开始十六进制编辑之后若保存的话将会以十六进制文本替换原文件。如果要想保存十六进制编辑的变更需要还原为原始的二进制,命令为:

%!xxd -r

 即对当前文件调用命令“xxd -r”,其作用就是将十六进制信息还原。


插入/删除

vim 通过上述方式调用外部命令“xxd”方式实现的十六进制编辑,不适合有插入/删除操作的编辑,通常只适用于只读查看或者覆盖式编辑。

 

如果需要插入/删除操作,可调整下开始/结束编辑命令分别用:

:e ++bin ++enc=ansi | %!xxd -i
:set ft=c
 :%!xxd -r -p

 这样其格式跟传统的十六进制编辑工具格式不大一样,但便于插入/删除操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值