You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim的十六进制模式下跨行搜索指定文本字符串?

在Vim十六进制模式中搜索跨行文本字符串

Vim自带的xxd转换模式确实没法直接搜索跨行的原始文本——因为转成十六进制后内容被拆成了固定宽度的行。不过有两种自带解法,也可以用插件简化操作:

自带方案一:切回普通模式搜完再转回去

不用装插件,步骤很简单:

  1. 先敲%!xxd -r把文件转回到普通文本模式
  2. 用常规搜索/1111111111111定位到目标字符串
  3. 再敲%!xxd切回十六进制模式,光标会停在对应的位置

自带方案二:构造跨行的十六进制正则

目标字符串"1111111111111"对应的十六进制是31重复13次。看你提供的xxd输出,前10个31在第一行末尾,剩下3个在第二行开头,直接写跨行正则就能匹配:

  • 执行搜索:/31\{10\}\n\s*31\{3\}
  • 拆解一下:31\{10\}匹配第一行的10个"1",\n匹配换行,\s*跳过第二行开头的空格,31\{3\}匹配剩下的3个"1"

要是不想手动数个数,也可以用Vim的表达式自动生成匹配规则:

  1. 先把目标字符串存到寄存器,比如光标在字符串上时敲"ayiw
  2. 然后执行搜索:/\=printf('%02X', char2nr(getreg('a')[0])).'\{'..strlen(getreg('a'))..'\}',这个命令会把寄存器里的文本转成对应的十六进制重复模式,再根据跨行情况微调就行

插件方案

如果经常要做这种操作,可以装vim-hexokinase插件,它支持在十六进制视图里直接输入原始文本搜索,自动处理跨行匹配,不用自己写正则。

内容的提问来源于stack exchange,提问作者kgflying

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:55:08