使用vim按十六进制代码搜索
我需要清理一个文件。我们有一个在其上运行的 xml 解析器,由于文件中的转义字符 (0x1B) 而失败。如何使用 vim 查找该字符在文件中的位置以便将其删除?
示例文件:
<?php
echo "Hello, world.\n";
?>
转换后:
0000000: 0a3c 3f70 6870 0a65 6368 6f20 2248 656c .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f lo, world.\n";.?
0000020: 3e0a
所以我删除了一个字符:(在本例中为“H”)
0000000: 0a3c 3f70 6870 0a65 6368 6f20 22 656c .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f lo, world.\n";.?
0000020: 3e0a
请注意第一行不再足够宽。当我将其转换回来时,我得到:
^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>
I need to clean up a file. We have an xml parser that runs on it that is failing due to an escape character (0x1B) in the file. How do I use vim to find where in the file that character is so I can remove it?
Example file:
<?php
echo "Hello, world.\n";
?>
After conversion:
0000000: 0a3c 3f70 6870 0a65 6368 6f20 2248 656c .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f lo, world.\n";.?
0000020: 3e0a
So I delete a char: (in this example, the 'H')
0000000: 0a3c 3f70 6870 0a65 6368 6f20 22 656c .<?php.echo "Hel
0000010: 6c6f 2c20 776f 726c 642e 5c6e 223b 0a3f lo, world.\n";.?
0000020: 3e0a
Notice how the first line isn't wide enough anymore. When I convert it back, I get:
^@<?php
echo "el^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
搜索(例如使用/)
\%x1b
。您还可以在命令行中键入控制字符(包括转义字符),方法是在控制字符前面加上 Ctrl-V。因此,请输入 /、Ctrl-V、Esc、Enter。
Search (e.g. using /) for
\%x1b
.You can also type control characters, including escape, into the command line by preceding them with Ctrl-V. So type /, Ctrl-V, Esc, Enter.
通过执行
[escape] :%!xxd
将 vim 转换为十六进制编辑器。然后搜索 0x1B (/1B
)。Transform vim into a hex editor by doing
[escape] :%!xxd
. Then search for 0x1B (/1B
).您可以通过将光标放在字符上并按
ga
来了解该字符的十六进制值。下面您将看到该字符的十六进制值。
<╬>
字符的示例通过以下方式删除它:
You can discover what a hex value of a character by putting the cursor on it and pressing
ga
Below you will see a hex value of the character. Example for a
<╬>
characterDelete it by :