zoukankan      html  css  js  c++  java
  • vim编码设置

    源贴地址:http://doc.linuxpk.com/80514.html

    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也能达到这个效果。

    另外,在ubuntu中文论坛还有人提出了这样的办法,直接就配置了

    所有代码直接粘贴到终端运行即可!
    安装程序
    代码:
    sudo apt-get install vim-gtk vim-doc cscope

    创建启动项
    代码:

    cat > /usr/share/applications/gvim.desktop << "EOF"
    [Desktop Entry]
    Name=Gvim
    Comment[zh_CN]=Gvim编辑器
    Exec=gvim
    Icon=/usr/share/pixmaps/gnome-word.png
    Terminal=false
    X-MultipleArgs=false
    Type=Application
    Categories=Application;Development;
    Encoding=UTF-8
    StartupNotify=true
    EOF

    locale为zh_CN.utf8的配置文件
    代码:

    cat > $HOME/.vimrc << "EOF"
    "===========================================================================
    " 项目: gvim 配置文件
    " 作者: yonsan [QQ:82555472]
    " 安装: sudo apt-get install vim-gtk
    " 用法: 将本文件(.vimrc)拷贝到$HOME/
    "===========================================================================

    " 使用 murphy 调色板
    colo murphy
    " 设置用于GUI图形用户界面的字体列表。
    set guifont=SimSun 10
    "
    set nocompatible
    " 设定文件浏览器目录为当前目录
    set bsdir=buffer
    set autochdir
    " 设置编码
    set enc=utf-8
    " 设置文件编码
    set fenc=utf-8
    " 设置文件编码检测类型及支持格式
    set fencs=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
    " 指定菜单语言
    set langmenu=zh_CN.UTF-8
    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim
    " 设置语法高亮度
    set syn=cpp
    "显示行号
    set nu!
    " 查找结果高亮度显示
    set hlsearch
    " tab宽度
    set tabstop=4
    set cindent shiftwidth=4
    set autoindent shiftwidth=4
    " C/C++注释
    set comments=://
    " 修正自动C式样注释功能 <2005/07/16>
    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 << "EOF"
    "===========================================================================
    " 项目: gvim 配置文件
    " 作者: yonsan [QQ:82555472]
    " 安装: sudo apt-get install vim-gtk
    " 用法: 将本文件(.vimrc)拷贝到$HOME/
    "===========================================================================

    " 使用 murphy 调色板
    colo murphy
    " 设置用于GUI图形用户界面的字体列表。
    set guifont=SimSun 10
    "
    set nocompatible
    " 设定文件浏览器目录为当前目录
    set bsdir=buffer
    set autochdir
    " 设置编码
    set enc=chinese
    " 设置文件编码
    set fenc=chinese
    " 设置文件编码检测类型及支持格式
    set fencs=gbk,utf-8,ucs-bom,gb18030,gb2312,cp936
    " 指定菜单语言
    set langmenu=zh_CN.GBK
    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim
    " 设置语法高亮度
    set syn=cpp
    "显示行号
    set nu!
    " 查找结果高亮度显示
    set hlsearch
    " tab宽度
    set tabstop=4
    set cindent shiftwidth=4
    set autoindent shiftwidth=4
    " C/C++注释
    set comments=://
    " 修正自动C式样注释功能 <2005/07/16>
    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

  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/beta2013/p/3377376.html
Copyright © 2011-2022 走看看