转发的别人的vim编码和终端编码的设置

VIM中字符编码的设置            
2008-07-24
12:54:18

分类:

VIM中,我们可以通过修改/etc/vimrc文件来设置VIM的encoding,我们可以通过:help
encoding来察看vim中关于encoding的一些帮助,:help encoding-values可以看到vim支持的encoding的值。
vim的encoding设置通常有三个参数: 1。encoding    
表示vim自身内部使用的编码方式,如内部缓冲,菜单,消息等的编码方式。如果你现在正以不同于encoding的编码编辑一个文件,如使用set,它并不决定文件被保存的编码方式,也不能指导vim我们要打开的文件是什么格式。它不是作这个用的。
2。fileencoding    
表示VIM所认为的当前被处理的文件的编码格式,即告诉我们当前打开的文件的格式。而且如果我们保存文件的话,vim也会以此格式保存,就算这个fileencoding并不是真正的fileencoding。举个例子,有个文件是utf-8编码,而且我们的vim将他成功打开了,即vim识别出他是utf-8编码,这样我们在vim里面执行:set
fileencoding命令得到的结果就是fileencoding=utf-8,可见vim已经识别出了这个文件的格式,而且以此格式对文件操作,如果我们手动修改fileencoding即:执行:set
fileencoding=cp936的话,然后保存文件,得到的文件就将自动被转换成了cp936格式,可以用file
filename命令来查看该文件的格式,的确如此。如果还想转换回来,就可以像刚才那样再次用vim打开,然后:set
fileencoding=utf-8然后保存,当然也可以用iconv命令即: iconv -f cp936 -t utf-8 -o targetfile
sourcefile 即将按照cp936格式编码的文件sourcefile转换成按照utf-8编码的文件targetfile.
此外,不管你怎么变换,我们一直没有改动encoding,而且使用:set
encoding命令查看其值,也是一直没有变,它的值如果我们不人工指定的话,一般来说默认等于我们的LANG里面的设置的字符集,我们目前默认的LANG=en_US.UTF-8,encoding一般会与LANG的locale设置保持一致的。可见,不管你认为文件是什么格式,我的encoding一直不变,那么我再进行文件处理的时候,就会在内部用一种格式,即encoding指定的格式,当然首先要从fileencoding指定的格式转换成encoding的格式,处理后,在转换成fileencoding的格式,具体的转换依赖的是iconv的功能。
   
那么,fileencoding的格式我们总不能每打开一个文件手动指定吧,vim时可以自动检查的,当检查成功后,就会自动设置fileencoding的值,这就是fileencodings的功能。  
3。fileencodings    
这是一个列表,他一般包含多个值,VIM在打开文件的时候会从这个列表中依次拿出一个值与被打开的文件比较,直到找到匹配的编码方式a。然后fileencoding就会被设置成a。这样当你对文件编辑的时候就会使用a.

下面是一段网上的介绍的摘抄: 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也能达到这个效果。
总结一下,我的vimrc里面的配置是: set fileencoding=gb18030 set
fileencodings=utf-8,gb18030,utf-16,big5 另外enc根据环境来设。

转发的别人的vim编码和终端编码的设置,布布扣,bubuko.com

时间: 2024-11-19 17:21:19

转发的别人的vim编码和终端编码的设置的相关文章

vim 如何编辑 GB2312 编码的文件?

vim 如何编辑 GB2312 编码的文件? 在 Linux 系统下, vim 如何编辑 GB2312 编码的文件?系统环境: LC_ALL=zh_CN.UTF-8 修改.vimrc文件,让其支持 gb2312就行“设定文件编码类型,彻底解决中文编码问题let &termencoding=&encodingset fileencodings=utf-8,gbk,ucs-bom,cp936 略微查了一下.vimrc中添加内容的含意, 内容如下: vim中编辑不同编码的文件时需要注意的一些地方

android:启动服务;广播(最高优先窃听信息)并转发给别人

3.1.Service服务 Service类似Activity,实际上就是一个没有界面的Activity,而且默认不会随着程序关闭而关闭. 开发人员自定义的服务类一般用来完成一些安全软件的一些监听功能,以及消息提示,流氓软件的功能. 系统服务则是通过类似getSystemService()的方法来取得系统的一些服务管理类(XxxxManager),来调用系统处理好的功能完成自己需要的操作,例如:电话监听,连接状态的判断等. 如果想自己编写一个服务类,可以建立一个类,继承Service,并覆写相应

linux之系统编码,python编码,文件编码

1     前言 如果你对python2和python3的中编解码很清楚,这里我认为你很清楚. 具体参考文档: "python2 encode和decode函数说明.docx" "字符编码--从ASCII开始.docx" 以上所有文档均为本地文档. 2     Python编码 sys.getdefaultencoding(): 获取系统当前编码,这里的系统指的是python自己的内置系统,并非操作系统,即3中的python编码. sys.setdefaultenc

linux下查看文件编码及修改编码

http://blog.csdn.net/jnbbwyth/article/details/6991425 查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添加以下内容: set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 这样,就可以

vim的树形菜单NERDTREE的设置

网上比较好的一篇文章:http://coolshell.cn/articles/1679.html http://coolshell.cn/articles/11312.html 1.Vim安装NERDTree插件: 先下载,官网:http://www.vim.org/scripts/script.php?script_id=1658 解压缩之后,把 plugin/NERD_tree.vim 和doc/NERD_tree.txt分别拷贝到~/.vim/plugin 和 ~/.vim/doc 目录

[转] linux下查看文件编码及修改编码

如果无法识别文件编码,可能是文件中已有乱码,此时需要去掉乱码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在 ~/.vimrc 文件中添加以下内容: set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936 这样,就可以让vim自动识别文件编码(可以自动

Bash shell使用环境的终端的环境设置:stty

Bash shell使用环境的终端的环境设置:stty stty -a 将当前所有的stty参数列出来 intr:给正在运行的程序发送中断信号 quit:给正在运行的程序发送退出信号 erase:向前删除字符 kill:删除命令行上的文字 eof:文件结束,输入结束 start:重启暂停的输出 stop:停止当前的输出 susp:给正在运行的程序发送一个终端停止信号 rprnt:输入命令时提示使用过的历史命令 werase:删除命令行的最后一个字 ^可以理解为Ctrl键,所以intr的快捷键就是

地图定位CoreLocation框架,地理位置编码与反编码

在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 这里我们简单了解一下CoreLocation,用于显示地理位置,坐标信息. 一.相关类介绍 CLLocationManager.用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向. CLLocation.封装了位置和高度信息. CLL

EAS BOS 根据编码规则获取编码

1 public static String getNumberByCodingRule(Context ctx, IObjectValue info, String orgUnitId) 2 throws Exception 3 { 4 ICodingRuleManager iCodingRuleManager = null; 5 if(ctx == null) 6 iCodingRuleManager = CodingRuleManagerFactory.getRemoteInstance(