每日一Vim(20)Vim 编码设置
Vim的编码选项
vim编码涉及四个概念,分别是enc,fenc,fencs,tenc
,一般乱码多是因这些参数设置不正确引起的,要想彻底摆脱vim的乱码问题,还是把这四个概念理清楚了,下面详细介绍之。
enc(encoding)
enc
的全称为encoding
,这是Vim内部使用的编码,如buffer,寄存器中的字符串。在Vim打开文本后,如果它的编码方式与它的内部编码不一致,Vim会先把编码转换成内部编码,如果它用的编码中含有没法转换为内部编码的字符,那么这些字符就会丢失掉。默认值是系统的locale来决定的,比如在windows下一般就是gbk或gb2312的,而在linux下就是utf-8。可以用命令:set enc
查看当前vim的enc是什么值,笔者的windows显示的是cp936
这里的cp936其实相当于gb2312,指系统的第936号编码格式。
fenc(fileencoding)
fenc为当前缓冲区(当前Vim打开这个文件)文件自身的编码,从磁盘读文件时,Vim会对文件编码检查,如果文件的编码与Vim内部编码(enc)不同,Vim就会对文本做编码转换,将fenc设置为文件的编码。Vim写文件到磁盘时,如果enc与fenc不一样,Vim就做编码转换,转换成编码fenc保存文件。在windows下你可以借由notepad++等编辑器检查文件是什么编码的。由于fenc是在打开文件时由Vim自动检测的,所以如果文章中有乱码也没法通过重新设置fenc来纠正,设置fenc只能改变文本的编码格式。
fencs(fileencodings)
这是一个字符编码的列表,编码的自动识别就是通过设置fencs实现的。当打开一个文件时,Vim会按照fencs中编码的顺序进行解码操作,如果匹配成功就用该编码来进行解码,并把这种编码设为fenc的值。这里的匹配成功指的是Vim能正确解码,不会出错,但是不保证没有乱码,所以fencs编码列表的顺序设置很关键,由于lanin1是iso8859-1,属于国际化的标准编码,他能表示任何字符,也就用于也不会出错,但是我们看到的可以是“乱码”。 所以一般fencs设置的顺序是这样子的:lan1放到最后面
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
tenc(termencoding)
终端使用文本编码,或者说是Vim用于屏幕显示时的编码,显示的时候Vim会把内部编码转换为屏幕编码再输出,也就是说我们从屏幕上看到的字符都是tenc编码的字符,如果为空,默认就是enc。windows平台Gvim会忽略掉tenc。一般就是从一个终端远程登陆到linux系统时候tenc会起作用。
乱码问题
如果碰到了乱码问题,只要你把enc,fenc统一设成utf-8问题都会解决了。下面这段配置就是我的Vimrc文件的关于解决乱码配置的代码段:
" 设置vim内部编码格式
set encoding=utf-8
" 解决windows下如果encoding设置utf-8,菜单会乱码问题
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"默认文件编码
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
参考:http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
转载请注明出处,谢谢合作!作者---zhijun
相关推荐
总之,配置Vim的字符编码设置是保证文本编辑体验的关键。通过合理设置`encoding`、`fileencodings`、`fileencoding`和`termencoding`,我们可以有效地处理各种编码的文件,避免乱码问题。同时,根据个人喜好调整图形...
每个插件的目录下的conf.vim中有更多的设置及说明 "FuzzyFinder fuf.vim模糊查找 source ~/.vim/bundle/fuzzyfinder/conf.vim "NERD_commenter.vim source ~/.vim/bundle/nerdcommenter/conf.vim "单独切换打开...
对于PHP开发者来说,配置一个适合自己的VIM环境可以显著提高编码效率。以下是对"VIM FOR PHP配置"的详细解释: 1. **.vimrc**:这是VIM的配置文件,它包含了用户自定义的设置和快捷键。在`.vimrc`中,你可以定制VIM...
本压缩包"经典vim插件设置"旨在帮助用户将Vim打造为一个IDE,使代码编辑、调试和项目管理更加便捷。以下是其中涉及的一些关键知识点: 1. **Cscope**:Cscope是一款源代码浏览工具,它支持多种编程语言,包括C、C++...
### Vim颜色设置详解 #### 一、引言 在日常编程与文本编辑过程中,Vim 是一款非常强大的工具。为了提高工作效率以及个性化编辑环境,掌握 Vim 的颜色设置是非常必要的。本文将详细介绍 Vim 颜色设置的方法及步骤,...
vim键盘的详细图片,可以平时当做桌面壁纸,忘记就拿出来看看
在Linux环境中,Vim(Vi Improved)是一款非常强大的文本编辑器,深受程序员和系统管理员的喜爱。为了提升编辑体验,我们可以通过自定义样式设置来个性化Vim,使其在显示C代码或其他编程语言时更加美观易读。这个...
【vim plugin vim changes to ide update】这一主题表明我们将探讨如何使用Vim插件来提升其作为集成开发环境(IDE)的功能。在这个过程中,我们将重点分析新增的三个插件:wintagexplorer.vim、echofunc.vim以及vimrc...
本文将深入探讨如何在Vim中设置tab键的宽度,以及这一设置对代码编写和阅读体验的影响。 ### Vim中设置tab键宽度的重要性 在编程或文本编辑中,tab键的使用频率非常高,尤其是在代码缩进方面。合理的tab键宽度设置...
打开.vimrc 文件,你会发现一系列的 Vim 命令和设置,例如 `set nocompatible` 用来禁用 Vim 的 vi 兼容模式,使其使用更现代的功能;`filetype plugin indent on` 开启文件类型检测,加载相应的插件和缩进规则;`...
如果仍然无法正常显示特殊字符,可能是由于编码设置问题导致的。此时,可以尝试以下编码设置: ```vim " 编码设置 set encoding=utf-8 set langmenu=zh_CN.UTF-8 set fileencodings=ucs-bom,utf-8,cp936,gb18030,big...
1. **设置编码**:`set fileencodings=utf-8` 确保文件以UTF-8编码打开和保存。 2. **禁用换行符**:`set noendofline` 保持文件中的行结束符与原始状态一致。 3. **自动缩进**:`set autoindent` 根据输入的代码...
jeffy-vim 很强的一个vim插件及配置 但安装之后出现下划线,那就需要进行设置, 可以在shell终端输入命令:vi ~/.vimrc 然后找到set cursorline 那一行,直接通过dd命令删除掉,退出保存即可
在选择 Vim 的内部编码的时候,需要使用一种表现能力足够强的编码,以免影响正常工作。 termencoding 是 Vim 用于屏幕显示的编码,在显示的时候,Vim 会把内部编码转换为屏幕编码。如果 termencoding 没有设置,则...
在IT行业中,文本编辑器是开发者们不可或缺的工具,Vim作为一款强大的命令行文本编辑器,因其高效和可定制性而备受喜爱。本篇文章将详细介绍如何在Vim中设置和使用自定义的文件模板,以提高编程和文档编写的工作效率...
为了提升深夜编码的体验,"vim-dues"应运而生,它是一个专为夜间编程设计的Vim配色方案。这个配色方案旨在降低视觉疲劳,提高代码可读性,尤其是在低光照环境下。 Vim的配色方案(color scheme)是改变编辑器界面...
在Linux环境下,使用Vim编辑中文文本时可能会遇到乱码问题,这主要是因为Vim的字符编码设置不正确。要解决这个问题,我们需要了解Vim的几个关键编码选项以及它们的作用。 1. **encoding**: 这个选项决定了Vim内部...
通过.vimrc文件,用户可以根据个人喜好定制Vim的各种设置,如快捷键、颜色方案、启动行为等。这种高度的自定义能力使得每个Vim用户都能拥有独一无二的编辑体验。 在Vim的“vim-master”目录中,包含了源代码、文档...
Vim(Vi IMproved)是一款强大的文本编辑器,被广泛用于Linux、Unix和其他类Unix系统。此编译包是Vim的8.2版本,专为CentOS x86架构设计,适合那些需要在该环境下进行高效文本编辑的用户。在安装这个编译包之前,...
8. **配置文件**: 个人化设置Vim,修改`~/.vimrc`文件。 Vim的学习曲线虽然陡峭,但它的强大功能和高度可定制性使其成为许多开发者的心头好。通过不断实践和学习,可以掌握Vim的各种技巧,让编辑工作变得更为高效。