• 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

  • 相关阅读:
    劝退人的不是算法本身,而是你以为是对的,但逻辑是对的,却报错
    小程序毕设开发笔记功能模块开发
    Python函数式编程
    Flask和Django的网络请求比较
    Flask与Django的表单类(待续)
    绍兴文理学院元培学院第十五届大学生程序设计竞赛题解
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('123')' at line 1
    vim保存修改的只读文件
    树莓派连接显示屏后显示有黒边解决方法
    MySQL Error: : 'Access denied for user 'root'@'localhost'
  • 原文地址:https://www.cnblogs.com/beta2013/p/3377376.html
Copyright © 2020-2023  润新知