【发布时间】:2012-06-29 10:15:58
【问题描述】:
希望对你来说这很容易回答。
我在 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。
【问题讨论】:
标签: vim powershell windows-7