usr_06

usr_06.txt 适用于 Vim 9.0 版本。 最近更新: 2022年8月 VIM 用户手册 - by Bram Moolenaar 译者: Nek_in 使用语法高亮 黑白的文字让人厌倦了,增加一些色彩能为你的文件带来生气。这不但看起来漂亮, 还能够提高你的工作效率。本章介绍如何使用不同颜色显示不同文本并把它打印出来。 06.1 功能激活 06.2 颜色显示不出来或者显示出错误的颜色怎么办? 06.3 使用不同的颜色 06.4 是否使用色彩 06.5 带颜色打印 06.6 深入阅读 下一章: usr_07.txt 编辑多个文件 前一章: usr_05.txt 选项设置 目录: usr_toc.txt

06.1 功能激活

一切从一个简单的命令开始: :syntax enable 大多数情况下,这会让你的文件带上颜色。Vim 会自动检测文件的类型,并调用合适的语 法高亮。一下子注释变成蓝色,关键字变成褐色,而字符串变成红色了。这使你可以很容 易浏览整个文档。很快你就会发现,黑白的文本真的会降低你的效率! 如果你希望总能看到语法高亮,把 "syntax enable" 命令加入到 vimrc 文件中。 如果你想语法高亮只在支持色彩的终端中生效,你可以在 vimrc 文件中这样写: if &t_Co > 1 syntax enable endif 如果你只想在 GUI 版本中有效,可以把 ":syntax enable" 放入你的 gvimrc 文件。

06.2 颜色显示不出来或者显示出错误的颜色怎么办?

有很多因素会让你看不到颜色: - 你的终端不支持彩色。 这种情况下,Vim 会用粗体,斜体和下划线区分不同文字,但这不好看。你可能 会希望找一个支持彩色的终端。对于 Unix,我推荐 XFree86 项目的 xterm: xfree-xterm 。 - 你的终端其实支持颜色,可是 Vim 不知道。 确保你的 $TERM 设置正确。例如,当你使用一个支持彩色的 xterm 终端: setenv TERM xterm-color 或者 (基于你用的控制台终端) TERM=xterm-color; export TERM 终端名必须与你使用的终端一致。如果这还是不行,参考一下 xterm-color , 那里介绍了一些使 Vim 显示彩色的方法 (不仅是 xterm)。 - 文件类型无法识别。 Vim 不可能识别所有文件,而且有时很难说一个文件是什么类型的。试一下这个 命令: :set filetype 如果结果是 "filetype=",那么问题就是出在文件类型上了。你可以手工指定文 件类型: :set filetype=fortran 要知道哪些类型是有效的,查看一下 $VIMRUNTIME/syntax 目录。对于 GUI 版 本,你还可以使用 Syntax 菜单。设置文件类型也可以通过 modeline ,这种 方式使得该文件每次被编辑时都被高亮。例如,下面这行可用于 Makefile (把 它放在接近文件首和文件末的地方) # vim: syntax=make 你可能知道怎么检测自己的文件类型,通常的方法是检查文件的扩展名 (就是点 后面的内容)。 new-filetype 说明如何告知 Vim 进行那种文件类型的检查。 - 你的文件类型没有语法高亮定义。 你可以找一个相似的文件类型并人工设置为那种类型。如果觉得不好,你可以自 己写一个,参见 mysyntaxfile 。 或者颜色是错的: - 彩色的文字难以辨认。 Vim 自动猜测你使用的背景色。如果是黑的 (或者其它深色的色彩),它会用浅 色作为前景色。如果是白的 (或者其它浅色),它会使用深色作为前景色。如果 Vim 猜错了,文字就很难认了。要解决这个问题,设置一下 'background' 选 项。对于深色: :set background=dark 而对于浅色: :set background=light 这两个命令必须在 ":syntax enable" 命令前调用,否则不起作用。如果要在这 之后设置背景,可以再调用一下 ":syntax reset" 使得 Vim 重新进行缺省颜色 的设置。 - 在自下往上滚屏的过程中颜色显示不对。 Vim 在分析文本的时候不对整个文件进行处理,它只分析你要显示的部分。这 样能省不少时间,但也会因此带来错误。一个简单的修正方法是敲 CTRL-L。 或者往回滚动一下再回来。要彻底解决这个问题,请参见 :syn-sync 。有些 语法定义文件有办法自己找到前面的内容,这可以参见相应的语法定义文件。 例如, tex.vim 中可以查到 Tex 语法定义。

06.3 使用不同颜色 :syn-default-override

如果你不喜欢默认的色彩方案,你可以选另一个色彩方案。在 GUI 版本中可以使用 Edit/Color 菜单。你也可以使用这个命令: :colorscheme evening "evening" 是色彩方案的名称。还有几种备选方案可以试一下。在 $VIMRUNTIME/colors 中可以找到这些方案。 等你确定了一种喜欢的色彩方案,可以把 ":colorscheme" 命令加到你的 vimrc 文件 中。 你可以自己编写色彩方案,方法如下: 1. 选择一种接近你理想的色彩方案。把这个文件拷贝到你自己的 Vim 目录中。在 Unix 上,可以这样: !mkdir ~/.vim/colors !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim 在 Vim 中完成的好处是可以利用 $VIMRUNTIME 变量。 2. 编辑这个色彩方案,常用的有下面的这些条目: term 黑白终端的属性 cterm 彩色终端的属性 ctermfg 彩色终端的前景色 ctermbg 彩色终端的背景色 gui GUI 版本属性 guifg GUI 版本的前景色 guibg GUI 版本的背景色 例如,要用绿色显示注释: :highlight Comment ctermfg=green guifg=green 属性是 "bold" (粗体) 和 "underline" (下划线) 可以用于 "cterm" 和 "gui"。如 果你两个都想用,可以用 "bond,underline"。详细信息请参考 :highlight 命令。 3. 告诉 Vim 总使用你这个色彩方案。把如下语句加入你的 vimrc 中: colorscheme mine 如果你要测试一下常用的色彩组合,用如下命令: :runtime syntax/colortest.vim 这样你会看到不同的颜色组合。你可以很容易的看到哪一种可读性好而且漂亮。不过这些 不是仅有的可用颜色。可以指定 #rrggbb 十六进制颜色,也可以为十六进制颜色在 |v: colornames| 里定义新颜色名,如: let v:colornames['mine_red'] = '#aa0000' 如果你编写别人都能用的色彩方案,注意 仅当颜色尚不存在时添加定义: call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep') 这使色彩方案的用户可在载入你的色彩方案之前,覆盖该颜色的准确定义,例如,在 .vimrc 文件里: runtime colors/lists/css_colors.vim let v:colornames['your_red'] = v:colornames['css_red'] colorscheme yourscheme 作为色彩方案作者,应该可以依赖用于 GUI 颜色的颜色名。它们定义在 colors/lists/default.vim 。每次运行 colorscheme 命令时都载入所有这些在 'runtimepath' 上找到的文件。vim 发布提供的官方列表应该已包含所有的 X11 颜色 (之前在 rgb.txt 中定义)。

06.4 是否使用色彩

使用色彩显示文本会影响效率。如果你觉得显示得很慢,可以临时关掉这个功能: :syntax clear 当你开始编辑另一个文件 (或者同一个文件),色彩会重新生效。 如果你要完全关闭这个功能: :syntax off 这个命令会停止对所有缓冲区的所有语法高亮。详见 :syntax-off :syn-manual 如果你想只对特定的文件采用语法高亮,可以使用这个命令: :syntax manual 这个命令激活语法高亮功能,但不会在你开始编辑一个缓冲区时自动生效 (译者注: Vim 中,每个被打开的文件对应一个缓冲区,后面的章节中你会接触到这方面的内容)。要在 当前缓冲区中使用高亮,需要设置 'syntax' 选项: :set syntax=ON

06.5 带颜色打印 syntax-printing

在 MS-Windows 版本上,你可以用如下命令打印当前文件: :hardcopy 这个命令会启动一个常见的打印对话框,你可以通过它选择打印机并作一些必要的设置。 如果你使用的是彩色打印机,那么打印出来的色彩将与你在 Vim 中看到的一样。但如果 你使用的是深色的背景,它的颜色会被适当调整,以便在白色地打印纸上看起来比较舒 服。 下面几个选项可以改变 Vim 的打印行为: 'printdevice' 'printheader' 'printfont' 'printoptions' 要仅打印一定范围内的行,可以用可视模式选择需要打印的行再执行打印命令,例如: v100j:hardcopy "v" 启动可视模式,"100j" 向下选中 100 行,然后执行 ":hardcopy" 打印这些行。当 然,你可以用其它命令选中这 100 行。 如果你有一台 PostScript 打印机,上面的方法也适合 Unix 系统。否则,你必须做一些 额外的处理: 你需要先把文件转换成 HTML 类型,然后用浏览器打印。 如下命令把当前文件转换成 HTML 格式: :TOhtml 如果不行: :source $VIMRUNTIME/syntax/2html.vim 你发现它会嘎吱嘎吱执行一阵子,(如果文件很大,这可能要花点时间)。之后,Vim 会打 开一个新的窗口并显示 HTML 代码。现在把这个文件存下来 (存在哪都不要紧,反正最后 你要删掉它的): :write main.c.html 用你喜欢的浏览器打开这个文件,并通过它打印这个文件。如果一切顺利,这个输出应该 与 Vim 中显示的一样。要了解更详细的信息,请参见 2html.vim 。处理完后别忘了删 掉那个 HTML 文件。 除了打印,你还可以把这个 HTML 文件,放到 WEB 服务器上,让其他人可以通过彩色文 本阅读。

06.6 深入阅读

usr_44.txt 自定义语法高亮 syntax 关于本话题的全部细节

下一章: usr_07.txt 编辑多个文件 版权: 参见 manual-copyright vim:tw=78:ts=8:noet:ft=help:norl: