下面内容转自:http://www.cnblogs.com/joeyupdo/archive/2013/03/03/2941737.html

顺便记录一下Vim编码的详细介绍

Vim和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括 UCS-2、UTF-8 等流行的 Unicode 编码方式。
Vim 有 四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding (这些选项可能的取值请参考 Vim 在线帮助  :help encoding-names),它们的意义如下:
(1)encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。
(2)fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此),网上是这样介绍的,但是我这样做在.vimrc中定义为utf-8似乎没有作用,只能在打开vim文件时手动设置才会起效,不知道什么原因。
(3)fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
(4)termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。

再来记录一下 Vim 的多字符编码方式支持是如何工作的。
(1)Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。
(2)读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到看起来是正确的 字符 编码方式, 如果没有找到合适的编码,就用latin-1(ASCII)编码打开 。
(3) 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。
(4)编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。

由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;) 。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。

编辑~/.vimrc文件,加上如下几行:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
   set termencoding=utf-8
   set encoding=utf-8

即可搞定。

linux下vim中文乱码的解决方法相关推荐

  1. linux 下vim文件乱码 cat文件正常处理方法

    linux 下vim文件乱码 cat文件正常处理方法 服务器支持中文字符集,cat和其他查看文件命令现在正常,vim还是出现了中文乱码问题, 1.查看文件编码格式 vim 文件 :set fileen ...

  2. 卸载ncurses_Linux下程序库Ncurses显示中文乱码的解决方法

    Ncurses是程序库,使用最多的组件是窗体,在Linux系统操作中,不少朋友使用Ncurses的时候遇到中文乱码问题,遇到该问题要如何处理呢?下面小编就给大家介绍下Linux使用Ncurses时出现 ...

  3. linux命令框显示中文乱码_CentOS终端命令行显示中文乱码的解决方法

    这篇文章主要介绍了CentOS终端命令行显示中文乱码的解决方法,以及测试方法和缺少中文字体时的解决方法,需要的朋友可以参考下 安装CentOS的时候选择了中文,结果在终端不能显示中文,都是乱码,解决方 ...

  4. windows下SVN日志反馈中文乱码的解决方法

    windows下SVN日志反馈中文乱码的解决方法 参考文章: (1)windows下SVN日志反馈中文乱码的解决方法 (2)https://www.cnblogs.com/wangkeqin/p/11 ...

  5. java 显示中文_java显示中文乱码的解决方法

    java显示中文乱码的解决方法 发布时间:2020-06-16 11:08:43 来源:亿速云 阅读:97 作者:Leah 这篇文章运用简单易懂的例子给大家介绍java显示中文乱码的解决方法,代码非常 ...

  6. xshell文件传输乱码_xShell终端中文乱码完全解决方法

    xShell终端中文乱码完全解决方法 xShell(xShell5)以及其他终端中文乱码的原因无非有三种: (1)Linux系统的编码问题: (2)xShell终端的编码问题: (3)两端的语言编码不 ...

  7. ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题

    确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...

  8. SQLyog中文乱码的解决方法

    SQLyog中文乱码的解决方法 初始情况: · 我使用的是SQLyog Enterprise v8.18. · Eclipse使用的文本编码是默认设置GBK: · 而服务器安装的MySQL: mysq ...

  9. mysql脚本执行中文乱码_MySQL从命令行导入SQL脚本时出现中文乱码的解决方法

    本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加 ...

最新文章

  1. ueditor编辑器和at.js集成
  2. java软件工程师成长过程的学习
  3. 5G NR — 射频系统
  4. 主机到中继地址的发包路径
  5. BugKuCTF WEB 输入密码查看flag
  6. 【每日一题】1月29日题目 和与或
  7. 日志 中文乱码、nacos 中文乱码、saltstack 中文乱码、docker中文乱码
  8. 自动化运维之–Cobbler
  9. 飞鱼知识变现小程序2.5.3源码_小程序功能模块
  10. 漫步数理统计三十二——中心极限定理
  11. bh1750采集流程图_基于MSP430和CC2530的温室大棚数据采集系统设计
  12. vscode写python_vscode如何编写python?
  13. PyTorch 1.0 中文文档:CUDA 语义
  14. matplotlib之legend图例和标注(笔记三)
  15. usercontrol控件生成后,左边工具栏不会出现工具的问题解法
  16. 【Git项目管理工具推荐】Sourcetree、Sourcegear-DiffMerge
  17. 这样的员工一定会成为高管
  18. excel如何让日期/时间增加指定分钟、小时、日
  19. nacos 适配人大金仓数据
  20. 无人机飞行模式(Ardupilot和MAVLink协议)(STABILIZE、ALTITUDE HOLD、LOITER、GUIDE、AUTO、LAND、RTL)

热门文章

  1. 磁卡感应卡二合一读写器|写卡器Z100-RF
  2. 微信PC端无法拖入文件
  3. 一个关于投资的顿悟,恍然大悟那种顿悟!
  4. idea打jar包(包括依赖包)
  5. 让linux挂载的移动硬盘具有执行权限
  6. 不是mysql常用的数据类型_6.下列( )不是MySQL常用的数据类型。
  7. 【信息汇总】暨南大学计算机考研
  8. android进销存系统
  9. linux作业调度软件,Zeit - Linux中定时任务和临时任务的图形化工具
  10. 中国最具影响力商界女性榜单揭晓:VIPKID创始人米雯娟连续两年登榜