Nic*_*son 22 unicode vim encoding utf-8
我遇到过几次问题因为vim的编码默认设置为latin1而我没有注意到并且假设它使用的是utf-8.现在我有了,我想设置vim,以便在所有明显的情况下都能做正确的事情,并默认使用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
Run Code Online (Sandbox Code Playgroud)
这是从vim wiki中采取并略微修改的.我搬到了bomb来自setglobal fileencoding其自身的陈述,因为否则它实际上并没有正常工作.由于我对物料清单的不确定性,我也评论了这条线.
我在找什么:
最后,我想这导致没有深思熟虑的需要复制/粘贴片段,将设立VIM为UTF-8的默认,将跨平台工作.
编辑:我已经将我自己的答案标记为现在已被接受,据我所知,它可以正常工作,并说明它可以合理解释的所有事情.但它不是一成不变的; 如果您有任何新信息,请随时回答!
Nic*_*son 24
为了回应,我会回答我自己的问题!我删除了我对原始问题所做的更新,并将它们移到了这个答案.这可能是更好的方法.
答案:
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
Run Code Online (Sandbox Code Playgroud)
我删除了该bomb行,因为根据BOM维基百科页面,在使用utf-8时不需要它,实际上违反了ASCII向后兼容性.只要ucs-bom是第一个fileencodings,vim将能够检测和处理带有BOM的现有文件,因此它也不需要.
我删除了该fileencodings行,因为在这种情况下不需要它.来自Vim文档:When 'encoding' is set to a Unicode encoding, and 'fileencodings' was not set yet, the default for 'fileencodings' is changed.
我正在使用setglobal filencoding(相对于set fileencoding)因为:当读取文件时,fileencoding将自动设置基于fileencodings.所以它只对新文件有用.并再次根据文档:
对于新文件,使用'fileencoding'的全局值.
| 归档时间: |
|
| 查看次数: |
9893 次 |
| 最近记录: |