如何在utf-8中正确设置vim进行编辑
我遇到过几次问题因为vim的编码默认设置为latin1而我没有注意到并且假设它使用的是utf-8。现在我有了,我想设置vim,以便它在所有明显的情况下做正确的事情,并默认使用utf-8。
我想避免的: >强制保存一些其他编码保存的文件,这些编码在我的更改打开为utf-8之前有效,导致乱码。 到目前为止我得到了什么: if has("multi_byte") if &termencoding == "" let &termencoding = &encoding endif set encoding=utf-8 " better default than latin1 setglobal fileencoding=utf-8 " change default file encoding when writing new files "setglobal bomb " use a BOM when writing new files set fileencodings=ucs-bom,utf-8,latin1 " order to check for encodings when reading files endif 这是从vim wiki开始稍作修改的。我将炸弹从setglobal fileencoding移动到它自己的语句,因为否则它实际上不起作用。由于我对BOM的不确定性,我也评论了这条线。 我在找什么: >可能的陷阱,以避免我错过 最终,我希望这会产生一个无需思考的复制/粘贴代码片段,它将为utf-8设置vim,默认情况下可以跨平台工作。 编辑:我已经将我自己的答案标记为现在已被接受,据我所知,它可以正常工作并且可以合理地解释所有可以解释的事情。但它并非一成不变;如果您有任何新信息,请随时回答!
为了回应,我会回答我自己的问题!我删除了我对原始问题所做的更新,并将它们移到了这个答案。这可能是更好的方法。
答案: if has("multi_byte") if &termencoding == "" let &termencoding = &encoding endif set encoding=utf-8 " better default than latin1 setglobal fileencoding=utf-8 " change default file encoding when writing new files endif 我删除了炸弹线,因为根据BOM Wikipedia page,使用utf-8时不需要它,实际上违反了ASCII向后兼容性。只要ucs-bom是fileencodings中的第一个,vim就能够检测和处理带有BOM的现有文件,因此也不需要它。 我删除了fileencodings行,因为在这种情况下不需要它。从Vim docs:当’encoding’设置为Unicode编码,并且’fileencodings’尚未设置时,’fileencodings’的默认值被更改。 我使用setglobal filencoding(而不是set fileencoding),因为:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |