尽责编写代码

到目前为止我们已经涉及到了很多可以使 Vim 更迅速的命令。 除开自动命令组,所有的都是单行命令,你可以短时间内就把它们添加到 ~/.vimrc 文件中。

在书中的下一部分,我们会把 Vimscript 看做是正真的编程语言来学习,但在这之前, 得先讨论讨论在写大量 Vimscript 代码时如何保持清醒。

注释

Vimscript 极其的强大,但是随着逐年的发展,已经错综复杂,随时等待着粗心的程序员进圈套。

选项和命令通常都是简洁并且难读的,处理兼容性问题会使代码变得复杂。 而写插件和允许用户自定义更将用户带到了另一个更复杂的层面!

在写稍微多一些的 Vimscript 代码时,要注意防范。 添加一段注释来解释这是做什么的,如果有什么相关的帮助主题,也在注释中提一笔!

这不仅有利于你在几个月或几年后来维护它,而且,如果把 ~/.vimrc 文件分享到 Bitbucket 或 Github 上(这也是我极力推荐的),也可以帮助他人理解。

归组

我们的编辑和载入执行 ~/.vimrc 的映射已经可以轻松并飞快地往里面新加东西了。 但不幸的是这也让它更易失控增长以至于难于驾驭。

一个处理的办法就是用 Vim 的代码折叠功能,把行归组到节。 如果你从来没有用过 Vim 的折叠,那应该尽快的看一看。 有些人(包括我自己)发现在日常的编程中这是不可缺少的。

首先我们需要设置 Vimscript 文件的折叠功能。把以下这些行添加到你的 ~/.vimrc文件中:

augroup filetype_vim
    autocmd!
    autocmd FileType vim setlocal foldmethod=marker
augroup END

这会告诉 Vim 对任何 Vimscript 文件使用 marker 的折叠方式。

继续下去,在 ~/.vimrc 文件的窗口中运行 :setlocal foldmethod=marker 。 载入执行这个文件不会起效,因为 Vim 已经设置了文件类型,自动命令只会在设置的时候触发。 但以后就不需要手动操作了了。

现在,添加几行内容到自动命令组的前后,那么看起来就像这样:

{% raw %}
" Vimscript file settings ---------------------- {{{
augroup filetype_vim
    autocmd!
    autocmd FileType vim setlocal foldmethod=marker
augroup END
" }}}
{% endraw %}

退回到普通模式,把光标放到这些行中的任意地方,并且键入 za。 Vim 会折叠从包含 {% raw %}{{{{% endraw %} 的行开始到包含 {% raw %}}}}{% endraw %} 的行结束的所有行。 再次键入 za 会展开这些行。

起初,你也许会想为源代码添加明确的注释来描述可折叠是很丑陋的。 在我第一次见的时候,也是这么想的。对于大部分的文件来说,我还是觉得这是不对的。 并不是每个人都使用同样的编辑器,所以, 杂乱地把可折叠注释放到代码里只会影响到其他不使用 Vim 的人看代码。

不过,Vimscript 文件是特殊的情况。不用 Vim 的人基本不会看你的代码,但在写 Vimscript 时,清晰、深虑地归组代码是尤其重要的。

尝试用段时间。你也许会喜欢上他们。

简称

Vim 允许为命令和选项使用缩写。例如,这两个命令做的是一模一样的事情:

:setlocal wrap
:setl wrap

我得着重提醒你不要在 ~/.vimrc 文件和所写的插件中使用缩写。 Vimscript 开头是十分精炼和神秘的,缩写只会在以后使得它更加难于阅读。 即使知道某个缩写命令表示什么,但其他阅读你代码的人也许就不知道了。

这就是说,缩写形式适合于在写代码的过程中手动运行命令。 没有人会在你按下回车键之后再看到它们,所以并没有原因去多按几个键。

练习

通读你的整个 ~/.vimrc 文件,把每行整理到相关的组里。 可以开始的地方也许是:“基本设置”,“特殊文件类型设置”,“映射”,以及“状态栏”。 给每节的标题添加折叠标记。

找找如何使 Vim 在打开文件的第一时间就自动折叠所有代码。 阅读 :help foldlevelstart 是个不错的开始。

通读你的 ~/.vimrc 文件,把所有缩写命令和选项改写为全名。

通读你的 ~/.vimrc 文件,确保在里面没有包含任何敏感的信息。 创建一个 git 或 Mercurial 仓库,把文件移入当中,创建符号链接到 ~/.vimrc

提交到你刚刚创建的仓库中,把它放到 Bitbucket 或 GitHub 中,这样其他人就可以看到, 并能获得一些自己的想法。务必适时提交并推送到仓库,这样你的修改会被记录下来。

如果你在多台电脑上使用 Vim,把仓库克隆下来,也给这个文件创建符号链接。 这可以使你在所有的电脑上更简单、轻松地使用完全相同的 Vim 配置。

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/18.html