当我在vim中查看我的文件时,会出现以下符号。
---<snip>----
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@fstalone
---<snip>-----
我创建的文件是重定向我的实用程序的stdout
和stderr
,如下所示:#./my_util > util.log 2>&1
。这个文件往往会变得非常庞大(~4 MB)
答案 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)
^ @出现。例如,如果您打开exe文件或图像文件,则显示^ @,这是一个不可读的字符。尝试在其他编辑器中打开文件并查看结果