在VIM中将ascii转换为hex

Cyb*_*Muz 2 vi vim hex

我经常需要将我在 vim 中编辑的文本的一小部分从十六进制转换为 ascii 或其他方式。我知道我可以通过 xxd 管道传输文本来完成此操作,但我希望以一种直观方式选择一些文本,然后使用快捷方式将所选文本转换为十六进制/ascii 的方式自动执行此操作。

例如,如果我选择123 Foo我想将其转换为31323320466f6f. 有没有 vim 插件可以做到这一点?我可以使用一些函数来做到这一点吗?

Men*_*ックス 5

这是一个可以为您做到这一点的映射:

vnoremap ; :<c-u>s/\%V./\=printf("%x",char2nr(submatch(0)))/g<cr><c-l>`<
Run Code Online (Sandbox Code Playgroud)

您可以更改;为您想要的任何组合。

编辑:

您可以按照@Cyber​​Muz 的评论中所述反转:

vnoremap u :<c-u>s/\%V\x\x/\=nr2char(printf("%d", "0x".submatch(0)))/g<cr><c-l>`<
Run Code Online (Sandbox Code Playgroud)