^@ vim 中的符号

问题描述 投票:0回答:3

当我在 vim 中查看我的文件时,会出现以下符号。

---<snip>----
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@fstalone
---<snip>-----

我创建的文件是通过重定向我的实用程序的

stdout
stderr
,像这样:
#./my_util > util.log 2>&1
。这个文件往往会变得非常大(~4 MB)

  1. 这个符号是什么?
  2. 如何摆脱它?
vim file-io
3个回答
41
投票

这就是 null 字符,其格式(Vim 经常使用这种格式,您可能已经注意到)称为 caret notation。基本上,您会以某种方式将充满零的字节放入文件中。

由于我们不知道您的实用程序在做什么,如果它是罪魁祸首,如果您希望我们提供帮助,您需要向我们展示一些代码。否则,如果您只想从文件中删除字符,请使用替换:

%s/<Ctrl-V><Ctrl-J>//g

Ctrl-V
标记转义序列的开始。同样按下
Ctrl-J
后,您应该会看到
^@
出现在您的命令中。因此,正如您所猜测的那样,
Ctrl-V, Ctrl-J
是空字符的一个转义序列。


8
投票

以上都不适合我。我在一些要替换的行的末尾有一个带有“^@”的文件。我设法通过使用以下方法搜索 '[\x0]' 来替换它:

%s/[\x0]//g

我希望它能为某人节省一个小时的生命。 这里有个解释,等我不忙的时候再回去看: 有更好解释的讨论


-7
投票

^@ 当你尝试在 vim 中打开一个非文本文件时出现。例如,如果您打开一个 exe 文件或图像文件,将显示 ^@,这是一个不可读的字符。尝试在其他编辑器中打开文件并查看结果

© www.soinside.com 2019 - 2024. All rights reserved.