0

在 Powershell 中,我运行一些命令行脚本并将其转储:

PS> cmd /c D:\script.bat | tee ~/out.log

然后,我在 vim 中打开这个日志,我看到的大致是这样的:

яю^M^@
^@C^@:^@\^@U^@s^@e^@r^@s^@>^@s^@e^@t^@ ^@D^@E^@B^@U^@G^@_^@F^@U^@L^@F^@I^@L^@L^@M^@E^@N^@T^@=^@-^@X^@r^@u^@n^@j^@d^@w^@p^@:^@t^@r^@a^@n^@s^@p^@o^@r^@t^@=^@d^@t^@_^@s^@o^@c^@k^@e^@t^@,^@a^@d^@d^@r^@e^@s^@s^@=^@3^@0^@0^@4^@,^@s^@e^@r^@v^@e^@r^@=^@y^@,^@s^@u^@s^@p^@e^@n^@d^@=^@n^@ ^@^M^@

和十六进制转储:

0000000: d18f d18e 0d00 0a00 4300 3a00 5c00 5500  ........C.:.\.U.
0000010: 7300 6500 7200 7300 3e00 7300 6500 7400  s.e.r.s.>.s.e.t.
0000020: 2000 4400 4500 4200 5500 4700 5f00 4600   .D.E.B.U.G._.F.
0000030: 5500 4c00 4600 4900 4c00 4c00 4d00 4500  U.L.F.I.L.L.M.E.
0000040: 4e00 5400 3d00 2d00 5800 7200 7500 6e00  N.T.=.-.X.r.u.n.
0000050: 6a00 6400 7700 7000 3a00 7400 7200 6100  j.d.w.p.:.t.r.a.
0000060: 6e00 7300 7000 6f00 7200 7400 3d00 6400  n.s.p.o.r.t.=.d.
0000070: 7400 5f00 7300 6f00 6300 6b00 6500 7400  t._.s.o.c.k.e.t.
0000080: 2c00 6100 6400 6400 7200 6500 7300 7300  ,.a.d.d.r.e.s.s.
0000090: 3d00 3300 3000 3000 3400 2c00 7300 6500  =.3.0.0.4.,.s.e.
00000a0: 7200 7600 6500 7200 3d00 7900 2c00 7300  r.v.e.r.=.y.,.s.
00000b0: 7500 7300 7000 6500 6e00 6400 3d00 6e00  u.s.p.e.n.d.=.n.
00000c0: 2000 0d00 0a                              ....

如何配置 vim 以正常打开此类文件,而无需每次都删除这些空值?PS记事本打开文件时不显示空值

4

2 回答 2

2

您的文件以 UTF-16 编码;每个字符由 2 个字节表示(低端在前)。

只要'encoding'设置为可以代表文件中字符的东西(utf-8推荐,latin1不会做),就可以了,无需摆弄它。

你需要告诉 Vim 文件的编码。要么在打开时明确

:edit ++enc=utf-16le out.log

或通过将值添加到(在具有 BOM 的文件之后,可以唯一标识)'fileencodings'

:set fileencodings=ucs-bom,utf-16le,utf-8,default,latin1
于 2012-07-20T10:08:14.467 回答
0

您的文件似乎是 UTF8 编码的。

要打开它,请使用如下编码参数启动 vim:

vim "+set encoding=utf-8"

或者如果您已经在编辑文件,您可以按如下方式设置编码:

:set enc=utf-8
于 2012-07-20T08:48:34.970 回答