^ @符号在vim中

时间:2012-02-03 06:48:16

标签: vim file-io

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

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

我创建的文件是重定向我的实用程序的stdoutstderr,如下所示:#./my_util > util.log 2>&1。这个文件往往会变得非常庞大(~4 MB)

  1. 这个符号是什么?
  2. 如何摆脱它?

3 个答案:

答案 0 :(得分:13)

这是null character,格式(Vim使用很多,你可能已经注意到了)称为caret notation。基本上,不知何故,你在文件中得到的字节数为零。

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

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

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

答案 1 :(得分:1)

以上都不对我有用。我要替换的某些行的末尾有一个带有'^ @'的文件。我通过使用以下命令搜索“ [\ x0]”来管理替代项:

%s/[\x0]//g

我希望它可以节省一个人一小时的生命。 这里有一个解释,当我不太忙的时候我会回头阅读: A discussion with a better explanation

答案 2 :(得分:-2)

当您尝试在vim中打开非文本文件时,

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