博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vim编码设置
阅读量:5296 次
发布时间:2019-06-14

本文共 2614 字,大约阅读时间需要 8 分钟。

vim,编辑器之王。

一般的,vim打开中文文件时会出现乱码,原因比较复杂,不罗嗦了。直接讲解决办法
set fileencoding=gb18030
set fileencodings=utf-8,gb18030,utf-16,big5
想看这样设置的原因吗?请继续。下文在网络中广泛流传
vim里面的编码主要跟三个参数有关:enc(encoding), fenc(fileencoding)和fencs(fileencodings)
其中fenc是当前文件的编码,也就是说,一个在vim里面已经正确显示了的文件(前提是你的系统环境跟你的enc设置匹配),你可以通过改变
fenc后再w来将此文件存成不同的编码。比如说,我:set fenc=utf-8然后:w就把文件存成utf-8的了,:set
fenc=gb18030再:w就把文件存成gb18030的了。这个值对于打开文件的时候是否能够正确地解码没有任何关系。
fencs就是用来在打开文件的时候进行解码的猜测列表。文件编码没有百分百正确的判断方法,所以vim只能猜测文件编码。比如我的vimrc里面这个的设置是
set fileencodings=utf-8,gb18030,utf-16,big5
所以我的vim每打开一个文件,先尝试用utf-8进行解码,如果用utf-8解码到了一半出错(所谓出错的意思是某个地方无法用utf-8正确地
解码),那么就从头来用gb18030重新尝试解码,如果gb18030又出错(注意gb18030并不是像utf-8似的规则编码,所以所谓的出错只是
说某个编码没有对应的有意义的字,比如0),就尝试用utf-16,仍然出错就尝试用big5。这一趟下来,如果中间的某次解码从头到尾都没有出错,那么
vim就认为这个文件是这个编码的,不会再进行后面的尝试了。这个时候,fenc的值就会被设为vim最后采用的编码值,可以用:set
fenc?来查看具体是什么。
当然这个也是有可能出错的,比如你的文件是gb18030编码的,但是实际上只有一两个字符是中文,那么有可能他们正好也能被utf-8解码,那么这个文件就会被误认为是utf-8的导致错误解码。
至于enc,其作用基本只是显示。不管最后的文件是什么编码的,vim都会将其转换为当前系统编码来进行处理,这样才能在当前系统里面正确地显示出
来,因此enc就是干这个的。在windows下面,enc默认是cp936,这也就是中文windows的默认编码,所以enc是不需要改的。在
linux下,随着你的系统locale可能设为zh_CN.gb18030或者zh_CN.utf-8,你的enc要对应的设为gb18030或者
utf-8(或者gbk之类的)。
最后再来说一下新建空文件的默认编码。看文档好像说会采用fencs里面的第一个编码作为新建文件的默认编码。但是这里有一个问题,就是fencs
的顺序跟解码成功率有很大关系,根据我的经验utf-8在前比gb18030在前成功率要高一些,那么如果我新建文件默认想让它是gb18030编码怎么
办?一个方法是每次新建文件后都:set fenc=gb18030一下,不过我发现在vimrc里面设置fenc=gb18030也能达到这个效果。
另外,在
中文论坛还
提出了这样的办法,直接就配置了
所有代码直接粘贴到终端运行即可!
安装程序
代码:
sudo apt-get install vim-gtk vim-doc cscope
创建启动项
代码:
cat > /usr/share/applications/gvim.desktop  $HOME/.vimrc 
set comments=s1:/*,mb:*,ex0:/
" 增强检索功能
set tags=./tags,./../tags,./**/tags
" 保存文件格式
set fileformats=unix,dos
" 键盘操作
map  gk
map  gj
" 命令行高度
set cmdheight=1
" 使用cscope
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endi
" 中文帮助
if version > 603
set helplang=cn
endi
EOF
locale为zh_CN.gbk的配置文件
代码:
cat > $HOME/.vimrc 
set comments=s1:/*,mb:*,ex0:/
" 增强检索功能
set tags=./tags,./../tags,./**/tags
" 保存文件格式
set fileformats=unix,dos
" 键盘操作
map  gk
map  gj
" 命令行高度
set cmdheight=1
" 使用cscope
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endi
" 中文帮助
if version > 603
set helplang=cn
endi
EOF
                
                

转载于:https://www.cnblogs.com/lv_yantao/archive/2011/12/04/2275187.html

你可能感兴趣的文章
Adapter(适配器)模式
查看>>
ImageView.ScaleType详解
查看>>
数据库三大范式
查看>>
css3动画的两种方式transition和@keyframs
查看>>
Java 基础总结(一)
查看>>
架构必备(转)
查看>>
ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理
查看>>
kubernetes基础
查看>>
利用原生js做了一个扫雷
查看>>
javascript
查看>>
项目启动报java.io.EOFException异常
查看>>
RabbitMQ入门:Hello RabbitMQ 代码实例
查看>>
ie6下使用min-height的方法
查看>>
解析ArcGis的字段计算器(二)——有玄机的要素Geometry属性,在属性表就能查出孔洞、多部件...
查看>>
c++ const enum #define
查看>>
初次来博客园
查看>>
Restful风格wcf调用2——增删改查
查看>>
最近使用asp.net时遇到 "运行时错误" 解决方案
查看>>
比例简化
查看>>
centos mysql 修改端口
查看>>