vim - 二进制编辑
问题描述
我一直在修补多个十六进制编辑器,但没有任何效果。
我正在寻找的是一种在实际二进制文件(不是十六进制)中更改二进制文件的方法。这纯粹是出于教育目的,我知道在两者之间进行转换很简单,但我希望能够像使用十六进制一样更改 1 和 0。
我已经尝试将 vim 与 %!xxd -b 一起使用,但它不适用于 %!xxd -r。我知道如何将文件转换为二进制文件,但我正在寻找一种方法以这种格式动态更改它并能够保存它。
如果我能找到一种方法来通过纯粹用实际二进制编码来实际创建二进制文件,那就更好了。
任何帮助将不胜感激:D
解决方案
vim
或者gvim
应该直接为您工作,无需xxd
过滤器。
在 (g)vim 中打开文件。将光标放在一个字符上并键入ga
以在状态行中查看其字符代码。要插入字符 NNN,请将光标放在您想要的位置,进入插入模式,Ctrl-v
然后键入三位十进制代码值。用于Ctrl-v x HH
通过十六进制代码输入字符。
确保您的终端未设置为使用 UTF8,因为在 UTF8 中,键入Ctrl-v 128
实际上会插入c280
字符 128 的 utf-8 编码,而不是80
.
LC_ALL=C vim binary-file
是确保您在 vim 中进行基于二进制字符的编辑的最简单方法,但如果您的终端是 utf-8,那可能会做一些奇怪的事情。
LC_ALL=C gvim binary-file
应该打开一个具有正确显示的独立窗口。
仅供参考,如果您确实想在 utf-8 中工作,Ctrl-v u HHHH
那么如何使用十六进制代码点 HHHH 输入 Unicode 字符。
推荐阅读
- javascript - 如何从嵌套对象中删除一组键?
- python - tensorflow python脚本迁移到2.1版本
- python - 替换 2d numpy 数组的特定值,但仅在边缘
- node.js - 带有 findByIdAndUpdate 的 NodeJS + Mongoose PATCH 方法甚至没有返回任何新内容:设置了选项中的 true
- oop - Groovy:找不到匹配的构造函数
- python - 如何在 Python 中使用 OpenCV 和 Tesseract 处理信用卡字体
- javascript - 如何在javascript中的随机函数中使用参数?
- django - Django 中的壁球迁移
- java - @PostAuthorize 失败时返回 404 而不是 403
- javascript - 反应如何忽略子元素的onClick