今天打开U盘中的一个文件,居然显示乱码,然后vim /etc/vimrc发现我的VIM配置好空啊

所以需要在文件中加入如下几行:

     set fileencodings=utf-8,ucs-bom,gbk,gb2312,cp936,gb18030,big5,latin-1

     set encoding=utf-8

     set termencoding=utf-8

     set fileencoding=utf-8

推荐下载下这个字体,测试了下还可以:

apt-get install fonts-wqy-zenhei

后续在补充VIM的很多有用的配置文件记录:

=====================================》

下面内容是百度出来的。

在 Vim 中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding 和 termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个 Vim 用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用

1、encoding

encoding 是 Vim 内部使用的字符编码方式。当我们设置了 encoding 之后,Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码。如果工作用的编码中含有无法转换为内部编码的字符,在这些字符就会丢失。 因此,在选择 Vim 的内部编码的时候,一定要使用一种表现能力足够强的编码,以免影响正常工作。

由于 encoding 选项涉及到 Vim 中所有字符的内部表示,因此只能在 Vim 启动的时候设置一次。在 Vim 工作过程中修改encoding 会造成非常多的问题。如果没有特别的理由,请始终将 encoding 设置为 utf-8。为了避免在非 UTF-8 的系统如 Windows 下,菜单和系统提示出现乱码,可同时做这几项设置:

2、termencoding

termencoding 是 Vim 用于屏幕显示的编码,在显示的时候,Vim 会把内部编码转换为屏幕编码,再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 termencoding 没有设置,则直接使用encoding 不进行转换。

举个例子,当你在 Windows 下通过 telnet 登录 Linux 工作站时,由于 Windows 的 telnet 是 GBK 编码的,而 Linux 下使用 UTF-8 编码,你在 telnet 下的 Vim 中就会乱码。此时有两种消除乱码的方式:一是把 Vim 的 encoding 改为 gbk,另一种方法是保持 encoding 为 utf-8,把 termencoding 改为 gbk,让 Vim 在显示的时候转码。显然,使用前一种方法时,如果遇到编辑的文件中含有 GBK 无法表示的字符时,这些字符就会丢失。但如果使用后一种方法,虽然由于终端所限,这些字符无法显示,但在编辑过程中这些字符是不会丢失的。

对于图形界面下的 GVim,它的显示不依赖 TERM,因此 termencoding 对于它没有意义。在 GTK2 下的 GVim 中,termencoding 永远是 utf-8,并且不能修改。而 Windows 下的 GVim 则忽略 termencoding 的存在。

3、fileencoding

当 Vim 从磁盘上读取文件的时候,会对文件的编码进行探测。如果文件的编码方式和 Vim 的内部编码方式不同,Vim 就会对编码进行转换。转换完毕后,Vim 会将 fileencoding 选项设置为文件的编码。当 Vim 存盘的时候,如果 encoding 和fileencoding 不一样,Vim 就会进行编码转换。因此,通过打开文件后设置 fileencoding,我们可以将文件由一种编码转换为另一种编码。但是,由前面的介绍可以看出,fileencoding 是在打开文件的时候,由 Vim 进行探测后自动设置的。因此,如果出现乱码,我们无法通过在打开文件后重新设置 fileencoding 来纠正乱码。

4、fileencodings

编 码的自动识别是通过设置 fileencodings 实现的,注意是复数形式。fileencodings 是一个用逗号分隔的列表,列表中的每一项是一种编码的名称。当我们打开文件的时候,VIM 按顺序使用 fileencodings 中的编码进行尝试解码,如果成功的话,就使用该编码方式进行解码,并将 fileencoding 设置为这个值,如果失败的话,就继续试验下一个编码。

因此,我们在设置 fileencodings 的时候,一定要把要求严格的、当文件不是这个编码的时候更容易出现解码失败的编码方式放在前面,把宽松的编码方式放在后面。

例 如,latin1 是一种非常宽松的编码方式,任何一种编码方式得到的文本,用 latin1 进行解码,都不会发生解码失败——当然,解码得到的结果自然也就是理所当然的“乱码”。因此,如果你把 latin1 放到了 fileencodings 的第一位的话,打开任何中文文件都是乱码也就是理所当然的了。

以下是推荐的一个 fileencodings 设置:

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

其中,ucs-bom 是一种非常严格的编码,非该编码的文件几乎没有可能被误判为 ucs-bom,因此放在第一位。

utf-8 也相当严格,除了很短的文件外(例如许多人津津乐道的 GBK 编码的“联通”被误判为 UTF-8 编码的经典错误),现实生活中一般文件是几乎不可能被误判的,因此放在第二位。

接下来是 cp936 和 gb18030,这两种编码相对宽松,如果放前面的话,会出现大量误判,所以就让它们靠后一些。cp936 的编码空间比 gb18030 小,所以把 cp936 放在 gb18030 前面。

至 于 big5、euc-jp 和 euc-kr,它们的严格程度和 cp936 差不多,把它们放在后面,在编辑这些编码的文件的时候必然出现大量误判,但这是 Vim 内置编码探测机制没有办法解决的事。由于中国用户很少有机会编辑这些编码的文件,因此我们还是决定把 cp936 和 gb18030 前提以保证这些编码的识别。

最 后就是 latin1 了。它是一种极其宽松的编码,以至于我们不得不把它放在最后一位。不过可惜的是,当你碰到一个真的 latin1 编码的文件时,绝大部分情况下,它没有机会 fall-back 到 latin1,往往在前面的编码中就被误判了。不过,正如前面所说的,中国用户没有太多机会接触这样的文件。

解决VIM打开U盘文件中文乱码的问题以及VIM有用的配置相关推荐

  1. 解决matlab打开批量脚本文件[中文乱码]问题

    问题: 在电脑A中matlab创建的脚本程序,拷贝后去电脑B上matlab软件打开,发现脚本文件中的中文注释是乱码的. 原因: 打开同一文件的matlab软件版本不一,matlab编码方式不同,在A上 ...

  2. 成功解决Eclipse打开py等文件出现乱码

    成功解决Eclipse打开py等文件出现乱码 目录 解决问题 解决思路 解决方法 解决问题 Eclipse打开py等文件出现中文乱码 解决思路 默认读取文件是以gbk的方式,需要在属性中进行转换一下即 ...

  3. php写入文本乱码,如何解决PHP用fwrite写入文件中文乱码的问题

    如何解决PHP用fwrite写入文件中文乱码的问题 发布时间:2020-07-15 13:52:07 来源:亿速云 阅读:220 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP用fw ...

  4. linux下打开windows txt文件中文乱码问题

    在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环 ...

  5. 解决freemarker生成的静态文件中文乱码的问题

    如果想实现效果,以下几个位置都需要去保证成功设置 1.系统设置编码方式均为utf-8 2.web.xml中设置模板的默认编码为utf-8 <servlet><servlet-name ...

  6. 解决MATLAB保存的eps文件中文乱码问题

    问题 MATLAB绘图后,保存为eps格式,在latex中插入eps图片,发现eps图片中的中文全是乱码,如下图所示: 有些eps图片会多出来白色空白区域,如何去除,也可以参考下面的方法 解决办法 需 ...

  7. java properties读取中文_Java读取properties文件中文乱码

    Java读取properties文件中文乱码 之前读取properties配置文件时候全都是英文或者数字之类的,最近项目有个需求要properties配置文件中有中文字符存在,那么读取java pro ...

  8. 解决网页打开json文件中文乱码情况

    解决网页打开json文件中文乱码情况 原因:保存json文件的格式不对 解决办法:另存json文件,保存的时候将编码类型修改为UTF-8,如图所示.将新json文件替换掉原json文件就好啦

  9. Web前端——VScode打开html文件中文乱码解决办法

    VScode打开html文件中文乱码解决办法 1.打开VScode后,依次点击 文件 >> 首选项 >> 设置 2.打开设置后,依次点击 文本编辑器 >> 文件(或 ...

  10. 解决ArcGIS 10.2 打开DWG文件中文乱码问题

    解决ArcGIS Desktop打开DWG文件中文乱码问题 参考:https://blog.csdn.net/a_dev/article/details/83862519 安装ArcGIS Deskt ...

最新文章

  1. innodb一页为什么要存储两行记录_InnoDB中的页合并与分裂
  2. android中的标题栏是什么意思,Android通用标题栏组合控件
  3. canvas绘制阴影
  4. bootStrap-treeview插件
  5. 计算机主板另一个名称,主板名称太复杂 看这几点就秒懂了
  6. SimpleDateFormat类 java 1614697530
  7. Myeclipse修改设置Default VM Arguments
  8. android 关于Uri.parse和uri.fromFile的区别
  9. IntelliJ IDEA如何build path
  10. lda主题模型困惑度_主题模型(三):LDA主题个数选择
  11. 小米手机与win10连接
  12. mbedtls学习--大数运算
  13. html 确定取消dialog,弹出一个带确认和取消的dialog实例
  14. java常用jar包下载_standard.jar包
  15. eclipse vail_屏幕快照:Windows Home Server Beta“ Vail”安装过程
  16. 产品日记(二)一些愚见, 记录在此
  17. 蓝桥杯(李白喝酒Java)
  18. 使用for循环编写倒立反方向直角三角形
  19. Java中常用的String方法解析和使用示例
  20. 猫小胖服务器位置,最终幻想14新增猫小胖大区拆分陆行鸟大区-最终幻想14国服大区调整计划公布!-Appfound...

热门文章

  1. chrome下使用JS检测浏览器是否使用开发者工具
  2. 获取MOSS页面中控件使用的样式(转)
  3. java json 本身_JSON以及Java转换JSON的方法(前后端常用处理方法)
  4. POJ 1226 Substrings(后缀数组)
  5. 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
  6. 前端那些事之时间轴篇
  7. 一次性删除maven本地仓库下的.lastUpdated 结尾的文件
  8. (Maven配置)Failed to read artifact descriptor for xxx:jar解决方法
  9. java 的初始化顺序
  10. Microsoft caffe cifar实例编译之model的生成