希望对你来说这将是微不足道的回答。
我在 Win7 上有 gvim 和 vim。每当我将命令结果重定向到文件并使用 Vim(或 Gvim,相同效果)打开它时,我都会在每个字符之间插入二进制 0(^@ 符号)。
所以,而不是
r96130
我有
^@r^@9^@6^@1^@3^@0^@
知道如何(首选)防止它或(很好)摆脱它吗?
我尝试了替换,但显然这不仅仅是 ^@,它是一个二进制零(我认为)所以它没有被/^@
.
编辑:
1)尝试将编码设置为 UTF-8(我正在处理的内容的编码)和 UTF-16(根据@Philippe Wendler的回答,谢谢),但无济于事。
2) __PowerShell__ 是有罪的一方。当我在常用命令行(通过cmd
)上进行重定向时,没有副作用。只有在 PowerShell 会话上创建的文件才会插入这些二进制零。
3)@Christian提到的 Powershell 好东西没有帮助。当我切换到 Ubuntu 作为我的主要操作系统并在那里使用 Vim 时,我将留下未回答的问题,所以这里唯一的“解决方案”现在是不使用 PowerShell + Vim,这显然是缺乏答案。:-)
解决方案!
感谢@Emperor XLII的解决方案!在这里发布,因为它是在评论中,所以可能不够明显:
dir | OutFile -Encoding UTF8 test
创建一个在 Vim 中出现的没有二进制零的文件。如果我使用 Encoding to OEM、ASCII 和我测试过的其他两种方式运行,也会发生同样的情况。
一个有希望的提示在于:he 'fileencodings'
- 是的,复数,由@Dan Fitch 撰写,但我还没有测试它,因为我那时已经离开了 Win7。