Vim

静态分析器集成

one take,中意“一次成型”,最早指歌手录歌时一次性通过录制,不存在发现错误-修正错误-重新录制这样的往返动作。one take 在编程环境中,就是一次性通过编译,我个人很享受 one take 带来的快感。当然,要达到 one take,不仅需要扎实的编程功底,还需要工具的辅佐 —— 代码静态分析器。前面介绍的神器 YCM 具备实时语法检查的能力。在它的作用下,编码中、编译前,所有语法错误都将被抓出来并呈现给你。

YCM 的整个静态分析过程分为如下几步:

  • 第一步,发现错误。YCM 内部调用 libclang 分析语法错误,通过管道传递给 YCM 呈现。当你保存代码、VIM 普通模式下移动光标或者安静 2 秒,错误检查后台任务将自动启动,若有错误,YCM 将接收到;
  • 第二步,呈现错误。YCM 并不非立马显示错误信息,除非你触发下次击键事件,否则你看不到错误信息,换言之,干等是没结果的,你必须有次击键动作(没办法,VIM 内部机制所限,后台任务无法直接更新 GUI,所以才采用变通的击键方式)。对于存在语法错误的代码,在行首有个红色的 >> 高亮显示;
  • 第三步,查看错误。好了,现在已经知道哪行代码有问题,具体问题描述如何查看?两种方式:一种是将光标移至问题行,VIM 将在其底部显示简要错误描述;一种是将光标移至问题行,键入 <leader>d 后,VIM 将在其底部显示详细错误描述。

静态代码分析静态代码分析

下一节:平时,最让我头痛的字符莫过于 {}、""、[] 等这类结对符,输入它们之所以麻烦,主要因为A)盲打很难找准它们位置,B)还得同时按住shift键。两者再一叠加,非常影响我的思维。要高效输入结对符,应该是输入少量几个字母(对,字母,不是字符)后 vim 自动为你输入完整结对符,而非是我输入一半 vim 输入另一半(不用 delimitMate 的原因)。刚好,这在 UltiSnips 能力范围内,只要定义好模板,可完美地解决这类问题,具体模板见上例中最后的结对符部分。