如何更改stdin的vims字符集?

时间:2018-04-17 03:15:05

标签: vim character-encoding stdin

echo "UTF-16le text"|vim -
:set encoding=utf-16le
:set fileencoding=utf-16le
:e! ++enc=utf-16le

对屏幕上显示的mojibake完全没有影响。虽然最后一个(:e! ++enc=utf-16le)导致错误E32: No file name

如果我将~/.vimrc编辑为set fileencodings=utf-16le,[...],那么它可以正常工作,但每次使用vim时我都不必编辑配置文件,是否有更好的方法?优选地,密钥代码将在:set fileencodings之间循环,这样我可以根据需要快速选择。

1 个答案:

答案 0 :(得分:0)

等效于~/.vimrc的命令行通过--cmd传递命令。您还可以使用:help :set^=命令在选项前添加值:

echo "UTF-16le text"|vim --cmd 'set fencs^=utf-16le' -

  

我每次使用vim都不必编辑配置文件

首先,我将测试将utf-16le永久保留在'fileencodings'中是否会对您定期编辑的任何文件产生负面影响;也许您可以安全地默认保留它。

第二,有AutoFenc这样的插件可以扩展内置检测,而fencview这样的插件可以让您从菜单中选择编码。

替代

UTF-16编码问题是众所周知的,字节顺序标记是一种易于检测的解决方案。有了这样的BOM,Vim可以开箱即用地正确检测编码。如果您输入的内容缺少BOM表,则可以手动添加它:

{ printf '\xFF\xFE'; echo "UTF-16le text"; } | vim -