当我在vim中查看我的文件时,会出现以下符号.
---<snip>----
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@fstalone
---<snip>-----
Run Code Online (Sandbox Code Playgroud)
我创建的文件是通过重定向stdout和stderr我的实用程序,如下所示:#./my_util > util.log 2>&1.这个文件往往会变得非常庞大(~4 MB)
voi*_*hos 17
这是一个空字符,格式(Vim使用很多,你可能已经注意到了)称为插入符号.基本上,不知何故,你的文件中充满了零个字节.
由于我们不知道您的实用程序在做什么,如果它是罪魁祸首,如果您希望我们提供帮助,您需要向我们展示一些代码.否则,如果您只想从文件中删除字符,请使用替换:
%s/<Ctrl-V><Ctrl-J>//g
Run Code Online (Sandbox Code Playgroud)
Ctrl-V标志着转义序列的开始.按下之后Ctrl-J,您应该看到^@出现在您的命令中.因此,正如您猜测的那样,Ctrl-V, Ctrl-J是null字符的一个转义序列.
Win*_*ing 11
以上都不适合我。我有一个文件,其中一些行末尾带有“^@”,我想替换它。我设法通过使用以下命令搜索“[\x0]”来替换它:
%s/[\x0]//g
Run Code Online (Sandbox Code Playgroud)
我希望它可以节省某人一个小时的生命。这里有一个解释,等我不那么忙的时候我会回去阅读: A Discussion with a betterterpretation