配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题

转载自:-杨博的日志 - 网易博客

Vim / gVim 在中文 Windows 下的字符编码有两个问题:

  1. 默认没有编码检测功能

  2. 如果一个文件本身采用的字符集比 GBK 大(如 UTF-8、UTF-16、GB18030),那么其中无法在 GBK 中对应的字符都会出现乱码,保存时会丢失。即使编辑文件时正确检测出文件格式也无济于事。

第一个问题的解决办法是在 ~/.vimrc 中加入以下配置:

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

第二个问题的解决办法是强制要求 Vim 的内部编码采用某种 UTF 编码。比如 UTF-8:

set encoding=utf-8

但是,把 Vim 的内部编码设为 UTF-8 会带来以下新问题

  1. 使用非 GUI 界面的 vim 时会乱码

  2. 提示信息(比如E492: 不是编辑器的命令: foo)会乱码

要解决非 GUI 界面的 vim 的乱码问题,需要设置终端编码为系统默认编码:

set termencoding=cp936

而要让提示信息不乱码则要需要使用 UTF-8 版本的提示信息:

language messages zh_CN.UTF-8

综上所述,在中文 Windows 下正确配置字符编码,需要把以下内容加入你的 ~/.vimrc 中

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
set termencoding=cp936
language messages zh_CN.UTF-8

特别提醒,以上代码应该放在 .vimrc 的最顶端,因为 vim 运行过程中 set encoding=xxx 是很危险的,会导致各种乱码(参见这里)。我自己所用的完整 .vimrc 放在https://sites.google.com/site/popatry/etc/-vimrc,持续更新。

时间: 2024-10-14 09:45:45

配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题的相关文章

Windows下的字符编码转换

主意:输入字符串必须是以'\0'结尾,如果输入字符串没有以'\0'结尾,请手动设置,否则转换会有错误. unsigned int EncodeUtil::AnsiToUcs2( char* pAnsi, wchar_t*& pUcs2 ){ //预转换,得到所需空间的大小 int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, pAnsi, strlen(pAnsi), NULL, 0); //分配空间要给'\0'留个空间,MultiByteToWide

在VMware中为CentOS配置静态ip并可访问网络-Windows下的VMware

在VMware中为CentOS配置静态ip并可访问网络-Windows下的VMware 首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命令行里输入“ipconfig /all”,找到VMware Network Adapter VMnet8的ipv4地址(例如:192.168.16.1),如下图: 然后确保虚拟机centos的网络配置是NAT,如下图: 最后按照以下方法设置静态ip: 启动并进入centos系统,在终端中输入“vim

中文系统下,UTF-8编码文本文件读取导致的错误

一.UTF-8编码文件读取导致的错误 有个txt文件,里面内容为: aaa bbb ccc 以UTF-8编码方式打开txt文件,顺序读取,将里面的值放到一个hashset中,并判断aaa是否在在hashset中 class { public static void main(String[] args) { try { HashSet<String> specialCateSet= new HashSet<String>(); FileInputStream a = new Fil

VMware中为CentOS配置静态ip并可访问网络-windows下的VMware

首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命令行里输入“ipconfig /all”,找到VMware Network Adapter VMnet8的ipv4地址(例如:192.168.16.1),如下图: 然后确保虚拟机centos的网络配置是NAT,如下图: 最后按照以下方法设置静态ip: 启动并进入centos系统,在终端中输入“vim /etc/sysconfig/network-scripts/ifcfg-eth0 ”

Windows下Python字符串编码问题

Python语言实际上有三种字符串,通常意义的字符串(str),Unicode字符串(unicode)和抽象类basestring,其中basestring不可实例化. 在Windows系统下的CPython解释器输入代码: >>> st1 = '中文' >>> st1 '\xd6\xd0\xce\xc4' >>> type(st1) <type 'str'> >>> st2 = st1.decode('gbk') >

Linux 配置 vimrc

由于熟悉了Windows下利用编译器进行编程,所以在刚刚接触Linux后的编程过程中会感觉其vim编译器的各种不方便编写程序,在逐渐的学习过程中了解到可以通过配置vimrc使得vim编译时类似于VS. 首先我们需要了解vimrc这个文件:vimrc有两个版本,分别为全局版本和用户版本,通过在vi下命令模式下输入[:version]会看到如下图所示的内容 其中系统vimrc文件是全局版本即系统中的公共版本,对其配置后所有用户下的vim编译器均被配置,用户vimrc文件是存在于每个用户的主目录下的私

Windows下Hadoop编程环境配置指南

刘勇    Email: [email protected] 本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于最近在研究Hadoop编程时,为考虑编程的方便,在Windows本地编译源程序,然后直接访问Hadoop集群,这样给广大编程人员提供了极大的便利.在这个过程中积累了一些实际经验,并针对在该过程中(初级阶段)可能会遇到的问题,提供一些解决方案,希望对大家有所帮助. 环境介绍 Hadoop 集群:hadoop

Windows下命令行Git无法显示中文问题解决方案

Windows下Git设置编码正常显示中文: 在 CMD 下设置环境变量 set LESSCHARSET=utf-8 在 PowerShell 下设置环境变量 $env:LESSCHARSET='utf-8'GitBash中正常显示中文: 打开Gitbash -> 右键->options ->左侧text->设置locale:zh_cn,设置Character set:GBK->save->apply 测试是否正常:GitBash输入 systeminfo看能否正常显示

vim字符编码设置

vim 编码方式的设置 和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux 世界的软件一样,这需要你自己动手设置. Vim 有四个跟字符编码方式有关的选项: encoding.fileencoding.fileencodings.termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下: encod