gpt4 book ai didi

vim - Windows 7 PowerShell 在每个字符之间插入 ^@ - 如何防止?

转载 作者:行者123 更新时间:2023-12-04 17:38:16 24 4
gpt4 key购买 nike

希望对您来说,这很容易回答。

我在 Win7 上有 gvim 和 vim。每当我将命令结果重定向到文件并使用 Vim(或 Gvim,效果相同)打开它时,我都会在每个字符之间插入二进制 0(^@ 符号)。

所以,而不是
r96130
我有
^@r^@9^@6^@1^@3^@0^@
知道如何(首选)防止它或(很好)摆脱它吗?

我尝试了替换,但显然这不仅仅是 ^@,它是一个二进制零(我认为)所以它没有在 /^@ 上被接收到。 .

编辑:

1)尝试将编码设置为 UTF-8(我正在处理的内容编码)和 UTF-16(根据 @Philippe Wendler 的回答,谢谢),但无济于事。

2) __PowerShell__ 是罪魁祸首。 当我在通常的命令行(通过 cmd )上进行重定向时,没有副作用。只有在 PowerShell session 上创建的文件才会插入这些二进制零。

3) Powershell 好东西 @Christian 提到没有帮助。我不会回答这个问题,因为我已经切换到 Ubuntu 作为我的主要操作系统并在那里使用 Vim,所以现在唯一的“解决方案”是不使用 PowerShell + Vim,这显然是缺乏答案的。 :-)

解决方案!

谢谢@ 皇帝四十二求解决办法!在这里发布,因为它是在评论中,所以可能不够明显:

dir | OutFile -Encoding UTF8 test 

创建一个出现在 Vim 中的文件,没有二进制零。如果我使用编码为 OEM、ASCII 和我测试过的其他两个运行,也会发生同样的情况。

一个很有前途的秘诀在于 :he 'fileencodings' - 是的,复数,@ 丹·菲奇 ,但我还没有测试它,因为我当时已经离开了 Win7。

最佳答案

Windows 使用 UTF-16在内部作为 Unicode 编码,这个文件看起来也使用 UTF-16,但 vim 用 8 位字符集(可能是 latin1)来解释它。

试试 :set encoding=utf-16在 vim 中选择正确的编码。

关于vim - Windows 7 PowerShell 在每个字符之间插入 ^@ - 如何防止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com