这几天工作上遇到一个修改十六进制文件的需求,发现vim+xxd并不能处理中间插入,删除字符这种操作,上网搜寻了一遍找到一个插件,测试了下,也不尽如意。
自己的想法是在xxd转换过后的界面里,对16进制字符串编辑后,xxd能自动将修改的文本重新的转成16进制,发现的是xxd对格式有要求,不符合的并不能正确的转换,所以定下目标是先改变buffer的内容,转成符合xxd格式要求的文本,再由xxd转回为bin。
取名又犯了难,想到一个rework的词,翻译是有重新修订的意思,觉得也比较符合了,于是叫了名字 vim-hex-rework。
写完了放在github https://github.com/rargo/vim-hex-rework, 自己用着感觉还好, 比较简单,只设置了一个命令,不足的地方是这个脚本每次需要对缓冲区的所有内容都扫描处理,对于大文件来说太慢了,这个可能是vim脚本运行速度的问题,想是不是可以使用lua处理更快点。
陆陆续续自己写了好几个vim插件,但毕竟没有太深入去研究vim的脚本语言,于是每次写代码都像是debug拼凑起来的,打调试看哪里错了,不行,修改脚本,退出vim重试。还好只是个爱好,不然这个效率就太惨了。