本文覆盖范围:

  • Vim 的着色方案
  • 设置高亮
  • 选择颜色
  • 语法高亮除错

每个程序员的文本编辑器缺少了语法高亮、特殊关键字和短语着色,都是不完整的。语法高亮突出了文档的结构,帮助发现排字错误,利于调试,整体上让文本编辑更轻松更有效率。本篇我们将探讨一下Vim的语法高亮范式以及如何建立和定制着色方案。

Vim着色方案

首先说明,本文谈论的不是哪种颜色最好,而是Vim如何处理语法高亮的问题。

在决定如何给一个文件着色时,Vim首先将文件分解成若干结构组。这些都是通过编写好的语法命令文件来实现,这些文件在Vim加载一个文件的时候就自动加载了,加载过程则是基于一系列复杂规则。如果Vim选择了一个错误的语法命令文件,你可以通过以下命令手工指定一个正确的文件:

:set syn=syntax-type

其中syntax-type是一个文件的类型。通常文件类型就是文件扩展名,例如选择PHP语法高亮,则将syntax-type设置为“php”。

Vim主要使用以下九种高亮分组:

Comment    : 注释
Constant : 常量,例如数字、引号内字符串、布尔值。
Identifier : 变量标识符名称。
Statement : 编程语言的声明,一般是像“if”或“while”这样的关键字。
PreProc : 预处理,例如C语言中的“#include”。
Type : 变量类型,例如“int”。
Special : 特殊符号,通常是类似字符串中的“\n”。
Underlined : 文本下划线。
Error : 显示编程语言错误的文本。

另外还有一个分组叫做Normal,表示普通文本。

也许你已经注意到,这些高亮分组主要针对编程语言,这是因为语法高亮对它们最有用。但是,Vim的高亮命令覆盖的文件类型远超过编程语言,包括从HTML到EMAIL的任何东西。

Vim还支持三种输出设备:black-and-white terminal(黑白终端),color terminal(彩色终端)和GUI(图形化的用户接口)。因为它们每一个都有自己独特的高亮能力,Vim为它们维护了三个独立的高亮方案。

建立高亮

实现高亮的最简便方式就是使用别人写好的.vimrc文件,就像这个(点击下载)。大多数时候这样做都挺好使。但是,如果它不好使或者你想从头开始,以下就是告诉你如何从头开始。

你必须在你的.vimrc文件的第一行写入:

syntax on

这行命令告诉Vim开始使用语法高亮。如果你暂时不想改动文件,你也可以在Vim窗口输入它作为一行命令。

如果你正在使用黑白终端或者GUI接口,一切都工作得刚刚好。如果你正在使用一个支持彩色的终端,你也许不得不将以下命令置于syntax on上一行:

set term=ansi

你也可以尝试一下color_xterm来代替ansi。

选择颜色

Vim有一套默认颜色方案,在我看来,有点过度明亮和混乱(注释和变量颜色是一样的)。但是每个人都有一套自己的颜色偏好,因此你可能会很想了解如何改变它的色彩来符合自己的口味。

Vim着色使用:highlight和:hi命令。:hi命令实际上是多用途命令,它负责许多例行着色,我们仅用它的颜色选择功用。它具有以下语法:

:hi Group key=value ...

Group就是前面所说的9个高亮分组名。

key-value键值对规定了不同输出终端的高亮值。这里有三个基本键名:term、cterm和gui,代表着黑白终端、彩色终端和图形界面。除了term以外,另外两个基本键还有两个扩展键名base-namefg和base-namebg,分别代表对应终端的前景和背景颜色。基本键只能拥有非色彩的高亮值,例如加粗和下划线。

以下是一些高亮键和它们可能的值:

term/cterm/gui: bold, underline, reverse, italic, none

ctermfg/ctermbg: red, yellow, green , blue, magenta, cyan, white, blcak, gray

guifg/guibg: 以上所有颜色,而且还可以使用#rrggbb格式色彩。

例如,我想高亮我的预处理声明为bright magenta,可以使用如下命令:

:hi PreProc ctermfg=magenta cterm=bold guifg=#FF00FF

注意,我可以在一行中使用多个键值对,他们都会应用于同一个高亮分组。

通常来说,只要你喜欢一个着色方案,你可以将它设置在你的~/.vimrc文件中,Vim会自动将其加载。

语法高亮除错

Vim的语法高亮偶尔也存在一些小问题,我就经常遭遇到其中的三个。

没有彩色,只有黑白终端高亮。

导致这种情况的最常见的原因是Vim无法确定终端是否具备彩色能力。要修复它,首先确保在.vimrc文件第一行设置了term=ansi,一定要在syntax on所在行之前。另外还要在shell中将环境变量TERM设置为color_xterm和color-xterm。

颜色有了,但不是我想要的。

这常发生在你试图修改别人的.vimrc文件以为己用的时候。有时,你只需要将自己的色彩定义全部放到文件的底部去就可以修复。如果不奏效的话,检查所有可疑的代码,然后将它们注释。(注释方法为在行首添加双引号)

滚屏时颜色乱成一团

Vim在确定高亮法则的时候使用多种探索方法来节约时间,有时这会造成一些故障。查看:h syn-sync可以得到更多细节。要修复这个,你可使用以下命令:

syn sync minlines=

你也可以在.vimrc文件中设置更大的数值。在Vim 6.0及以上版本,你可以使用以下命令:

syn sync fromstart

该命令强制高亮引擎从文件第一行开始解析文件,这对大文件而言会很慢,但它可以确保色彩准确度。

此时此刻,如果你习惯了使用Vim,并且你已经鼓捣了一阵它的配置,发现一些你喜欢的特性,恭喜你,你现在是一个Vim User了。当然,在本教程中我还会教更多的关于Vim的东西,有人写了一整本关于编程的书,但我希望你从本教程可以掌握一些基础知识并且探索更多知识。享受学习,这是一项你永远不会后悔拥有的技能。

译自此处

Vim 手记:语法高亮的更多相关文章

  1. vim 配置语法高亮 行号标示

    配置VIM主要是开启VIM的语法高亮和行号标示,因为默认在用户目录(~)下没有vimrc,所以需要先去复制一个,然后再编辑 cp /etc/vim/vimrc ~/.vimrc vim .vimrc ...

  2. VIM C++语法高亮配色

    因工作需求,必须在终端下远程下代码,vim打开cpp/h文件,看到一连串的字母就傻了,根本无法阅读. 后来才知道VIM这高大上的文本编辑器支持很多的功能,很多的功能.首先最基本的就是语法高亮配色 1. ...

  3. Mac下Vim配置语法高亮

    设置终端的字体颜色 如图,打开终端然后,选择偏好设置,再选择描述文件,再窗口左侧可以选择系统配置好的,或者你也可以自定义,最后别忘了把你的配置设置成默认就行 Vim语法高亮设置 只需要找到vimrc配 ...

  4. 如何设置nesC在vim中语法高亮

    默认的vim没有支持nesC语法高亮,给阅读源码带来不便.不过可以通过装NesC Syntax Highlighting插件来解决这个问题,具体操作如下:   步骤一:下载插件 在http://www ...

  5. VIM 自定义语法高亮配置

    VIM 没有自动支持语法高亮,自己动手搞一搞,网上查了一堆资料,终于配置成功, 记录一下,以便后期查看. 总共两步: step1 : 定义语法规则 1)需要创建一个定义语法规则的文件,这个 actio ...

  6. vim的语法高亮及配置文件说明

    本文主要针对那些刚刚入门的菜鸟,老手请自动忽略,谢谢. 一.安装vim: sudo pacman -S vim 随后根据提示输入超级用户密码即可完成安装 二.配置自己的语法高亮文件,主要是修改-/.v ...

  7. Fedora CentOS Red Hat中让vim支持语法高亮设置

    Fedora / CentOS / Red Hat这三个系统里默认的vi是没有语法高亮显示的,白色的字体看起来很不舒服. 首先用命令行cat /etc/os-release查看当前linux系统的类型 ...

  8. vim自定义语法高亮(syntax highlight)设置流程

    这里用一个非常简单的例子来展示vim自定义自己的语法并高亮显示的设置流程. 所使用的实例语言是python,为了区分vim自带的python语法,我们把文件名保存为test.me,其内容如下图所示: ...

  9. 【小技能整理】mac vim开启语法高亮

    步骤1: cp /usr/share/vim/vimrc ~/.vimrc 先复制一份vim配置模板到个人目录下 注:redhat 改成 cp /etc/vimrc ~/.vimrc 步骤2: vi ...

  10. vim设置语法高亮

    在vim安装目录中的_vimrc修改,加上以下的代码. set nu! colorscheme desert      syntax enable      syntax on

随机推荐

  1. install Mac OS on Vmware

    本文将用详尽的图文介绍如何在虚拟机中安装运行Mac OS X,只要严格地按照本教程一步步操作,即使不了解苹果电脑的读者,也能顺利地安装并运行Mac OS X. 一.准备工作 VMWare 12 Pro ...

  2. sublime text 2使用方法

    笔者用过的一些软件用来写Verilog代码,比如notepad+,ultra,editplus等,近日在群里看到大家在讨论一个比较有意思的软件,sublime text,才发现有种相见恨晚的感觉,其实 ...

  3. Java 之 File

    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...

  4. mac下配置android环境变量

    下面我将一下mac环境下的配置步骤: 1.在本地目录(home directory)中创建文件.bash_profile2.在文件中写入以下内容:export PATH=${PATH}:/Users/ ...

  5. MD5骨骼动画模型加载(一)

    前面我们分析了静态模型OBJ格式,桢动画模型MD2,这篇主要分析骨骼动画MD5的一些概念并且实现. 混合桢动画有计算简单,容易实现等优点,但是在需要比较细致的效果时,则需要更多的关键桢,每桢都添加相同 ...

  6. linux系统下的缺失 libstdc++.so.6: version’GLIBCXX_3.4.20’的问题:

    在linux下遇到了一个这样的问题,使用anaconda时,它的安装库里的文件被提示:缺失 libstdc++.so.6: version’GLIBCXX_3.4.20’.后来经过查看资料知道了原来是 ...

  7. Salt-ssh批量自动安装被控端salt-mini

    Salt-ssh是Saltstack的另外一种管理方式,无需安装minion端,可以运行salt的一切功能,管理和使用方法基本和salt一样.但是,salt-ssh并没有继承原来的ZeroMQ通讯架构 ...

  8. pyremotevbox 用法

    >>> import pyremotevbox.vbox as vbox >>> host = vbox.VirtualBoxHost(host='10.0.2.2 ...

  9. C# 窗体间传值(使用委托与自定义事件)

    using System; using System.Drawing; using System.Windows.Forms; namespace 跨窗体调用控件 { public partial c ...

  10. 分享8款令人惊叹的HTML5 Canvas动画特效

    HTML5的确可以制作出非常绚丽的网页动画效果,尤其是利用HTML5 Canvas特性和HTML5 3D特性,我们更加可以欣赏到超酷的动画特效.今天我从html5tricks网站上整理了8款令人惊叹的 ...