Vim

获取离线和在线帮助

离线帮助

VIM 自带了一套很完善的帮助文档,它们是一个个有固定排版格式的文本文件,通过标签可以访问这些文件的特定位置。

在开始之前先读一下这个章节::help :help。执行这个命令以后会在新窗口打开 $VIMRUNTIME/doc/helphelp.txt 文件并跳转到这个文件中 :help 标签的位置。

一些关于帮助主题的简单规则:

  • 用单引号把文本包起来表示选项,如::h 'textwidth'
  • 以小括号结尾表示 VimL 函数,如::h reverse()
  • 以英文冒号开头表示命令,如::h :echo

使用快捷键 `` (这是 ctrl+d)来列出所有包含你当前输入的内容的帮助主题。如::h tab 会列出所有包含 tab 主题,从 softtabstopsetting-guitablabel (译者注:根据安装的插件不同列出的选项也会不同)。

你想查看所有的 VimL 方法吗?很简单,只要输入::h () 就可以了。你想查看所有与窗口相关的函数吗?输入 :h win*()

相信你很快就能掌握这些技巧,但是在刚开始的时候,你可能对于该通过什么进行查找一点线索都没有。这时你可以想象一些与要查找的内容相关的关键字,再让 :helpgrep 来帮忙。

:helpgrep backwards

上面的命令会在所有的帮助文件中搜索“backwards”,然后跳转到第一个匹配的位置。所有的匹配位置都会被添加到全局位置信息表,用 :cp / :cn 可以在匹配位置之间进行切换。或者用 :copen 命令来打开全局位置信息表,将光标定位到你想要的位置,再按 回车就可以跳转到该匹配项。详细说明请参考 :h quickfix

如果你知道你想要找什么,使用帮助系统的搜索会更简单一些,因为搜索出的主题都带有固定的格式。

而且帮助系统中的主题包含了你当前使用的 VIM 版本的所特有特性,而网上那些已经过时或者是早期发布的话题是不会包含这些的。

因此学习使用帮助系统以及它所用的语言是很有必要的。这里是一些例子(不一定全,我有可能忘了一些什么)。

(译者注:下面列表中提及的都是如何指定搜索主题以便快速准确的找到你想要的帮助)

  1. 选项要用单引号引起来。用 :h 'list' 来查看列表选项帮助。只有你明确的知道你要找这么一个选项的时候才可以这么做,不然的话你可以用 :h options.txt 来打开所有选项的帮助页面,再用正则表达式进行搜索,如:/width。某些选项有它们自己的命名空间,如::h cpo-a:h cpo-A:h cpo-b 等等。
  2. 普通模式的命令不能用冒号作为前缀。使用 :h gt 来转到“gt”命令的帮助页面。
  3. 正则表达式以“/”开头,所以 :h /\+ 会带你到正则表达式中量词“+”的帮助页面。
  4. 组合键经常以一个字母开头表示它们可以在哪些模式中使用。如::h i_CTRL-X 会带你到插入模式下的 CTRL-X 命令的用法帮助页面,这是一个自动完成类的组合键。需要注意的是某些键是有固定写法的,如 Control 键写成 CTRL。还有,查找普通模式下的组合键帮助时,可以省略开头的字母“n”,如::h CTRL-A。而 :h c_CTRL-A(译者注:原文为 :h c_CRTL-R,感觉改为 A 更符合上下文语境)会解释 CTRL-A 在命令模式下输入命令时的作用;:h v_CTRL-A 说的是在可见模式下把光标所在处的数字加 1;:h g_CTRL-A 则说的是 g 命令(你需要先按 "g" 的命令)。这里的 "g" 代表一个普通的命令,这个命令总是与其它的按键组合使用才生效,与 "z" 开始的命令相似。
  5. 寄存器是以 "quote" 开头的。如::h quote: (译者注:原文为:h quote,感觉作者想以":"来举例)来查看关于":"寄存器的说明。
  6. 关于 VIM 脚本(VimL)的帮助都在 :h eval.txt 里。而某些方面的语言可以使用 :h expr-X 获取帮助,其中的 'X' 是一个特定的字符,如::h expr-! 会跳转到描述 VimL 中'!'(非)的章节。另外一个重要提示,可以使用 :h function-list 来查看所有函数的简要描述,列表中包括函数名和一句话描述。
  7. 关于映射都可以在 :h map.txt 中找到。通过 :h mapmode-i 来查找 :imap 命令的相关信息;通过 :h map-topic 来查找专门针对映射的帮助(译者注:topic 为一个占位符,正如上面的字符 'X' 一样,在实际使用中需要替换成相应的单词)(如::h :map-local 查询本地 buffer 的映射,:h map-bar 查询如何在映射中处理'|')。
  8. 命令定义用 "command-" 开头,如用 :h command-bar 来查看自定义命令中'!'的作用。
  9. 窗口管理类的命令是以 "CTRL-W" 开头的,所以你可以用 :h CTRL-W_* 来查找相应的帮助(译者注:'*'同样为占位符)(如::h CTRL-W_p 查看切换到之前访问的窗口命令的解释)。如果你想找窗口处理的命令,还可以通过访问 :h windows.txt 并逐行向下浏览,所有窗口管理的命令都在这里了。
  10. 执行类的命令以":"开头,即::h :s 讲的是 ":s" 命令。
  11. 在输入某个话题时按 CTRL-D,让 VIM 列出所有的近似项辅助你输入。
  12. :helpgrep 在所有的帮助页面(通常还包括了已安装的插件的帮助页面)中进行搜索。参考 :h :helpgrep 来了解如何使用。当你搜索了一个话题之后,所有的匹配结果都被保存到了全局位置信息表(或局部位置信息表)当中,可以通过 :copen:lopen 打开。在打开的窗口中可能通过 / 对搜索结果进行进一步的过滤。
  13. :h helphelp 里介绍了如何使用帮助系统。
  14. 用户手册。它采用了一种对初学者更加友好的方式来展示帮助话题。用 :h usr_toc.txt 打开目录(你可能已经猜到这个命令的用处了)。浏览用户手册能帮助你找出某些你想了解的话题,如你可以在第 24 章看到关于“复合字符”以及“输入特殊字符”的讲解(用 :h usr_24.txt 可以快速打开相关章节)。
  15. 高亮分组的帮助以 hl- 开头。如::h hl-WarningMsg 说的是警告信息分组的高亮。
  16. 语法高亮以:syc- 开头,如::h :syn-conceal 讲的是 :syn 命令的对于隐藏字符是如何显示的。
  17. 快速修复命令以 :c 开头,而位置列表命令以 :l 开头。
  18. :h BufWinLeave 讲的是 BufWinLeave 自动命令。还有,:h autocommand-events (译者注:原文是 :h autocommands-events,但是没有该帮助)讲的是所有可用的事件。
  19. 启动参数都以“-”开头,如::h -f 会告诉你 VIM 中 “-f” 参数的作用。
  20. 额外的特性都以“+”开头,如::h +conceal 讲的是关于隐藏字符的支持。
  21. 错误代码可以在帮助系统中直接查到。:h E297 会带你到关于这一错误的详细解释。但是有时并没有转到错误描述,而是列出了经常导出这一错误的 VIM 命令,如 :h E128 (译者注:原文为:h hE128,但是并没有该帮助)会直接跳转到 :function 命令。
  22. 关于包含的语法文件的文档的帮助话题格式是 :h ft-*-syntax。如::h ft-c-syntax 说的就是 C 语言语法文件以及它所提供的选项。有的语法文件还会带有自动完成(:h ft-php-omni)或文件类型插件(:h ft-tex-plugin)相关的章节可以查看。

另外在每个帮助页的顶端通常会包含一个用户文档链接(更多的从从用户的角度出发来主角命令的功能和用法,不涉及那么多细节)。如::h pattern.txt 里包含了 :h 03.9:h usr_27 两个章节的链接。

在线帮助

如果你遇到了无法解决的问题,或者需要指引的话,可以参考 Vim 使用邮件列表。 IRC 也是一个很不错的资源。 Freenode 上的 #vim 频道很庞大,并且里面有许多乐于助人的人。如果你想给 VIM 提交 Bug 的话,可以使用 vim_dev 邮件列表。