JavaScript语法检查插件 jsLint for Vim

工欲善其事,必先利其器。作为更专业的前端工程师,我们需要强劲的IDE协助我们写出规范、美观、漂亮的JavaScript代码,首先要作的就是对代码进行合法性检查,而通过 www.jslint.com 进行手工操作又显得碍手碍脚。为了提高效率,这里推荐使用 jsLint + Vim(gVim),能够协助你达到事半功倍的效果。

首先,和 JavaScriptLint 不同[注1]jsLint 是需要 JavaScript 引擎的支持的,linux中可选的有基于 C 语言的 Spidermonkey 和基于 Java 的 Rhino,考虑到速度,推荐使用 Spidermonkey。另外,jsLint.vim 初始配置挂载的监听有些冗余,这会导致 Vim 运行很慢,影响编码的效率,这里我 hack 了一份 jslint.vim,只用F4键就可以开启/关闭语法检查,下面介绍配置方法(linux & windows)。

jsLint + vim for Linux

1,准备JS引擎

linux 下默认没有 JavaScript 引擎,需要安装,旧版本的 ubuntu 通过apt-get来安装

sudo apt-get install spidermonkey-bin

新版的 ubuntu 需要通过下面这个包安装

https://launchpad.net/ubuntu/hardy/i386/spidermonkey-bin/1.8.1.4-2ubuntu5

其他linux发行版可以通过源码安装:

ftp://ftp.mozilla.org/pub/mozilla.org/js/

2,安装ruby环境

ubuntu下安装:

sudo apt-get install ruby

redhet系发行版中的安装:

yum install ruby

3,安装vim,通常linux中自带,不用安装

4,下载 jsLint 插件,下载后解压缩,把其中的 javascript 目录拷贝至 $VIM/plugin/中(作者给的文档有误,不应是$VIM/ftplugin/),当然也可以放到 ~/.vim/plugin/ 中

5,将解压后 jslint/bin 目录中的 jslint 文件拷贝至 /usr/bin 中,也可以拷贝到~/bin/中

6,下载 http://jayli.github.com/gallery/vim/jslint.vim 文件,覆盖 $VIM/plugin/javascript/jslint.vim

7,完成,打开一个js文件,用F4唤醒语法检查,再按F4关闭语法检查

jslint + gvim for windows

windows 下自带 CScript,不用再安装其他 JavaScript 引擎

1,安装ruby运行环境

2,安装 gvim,假设安装到 C:/Program Files/Vim 中

3,下载 jsLint 插件,下载后解压缩,将 ftplugin 目录中的 javascript 文件夹复制到 C:/Program Files/vim/vim72/plugin/ 目录中

4,将 jslint 解压缩后的“/bin/jslint”文件添加后缀名 “exe”,并将其所在的路径添加到环境变量的 Path 中,比如我将 jslint.exe 放到 C:/user/bachi/ 中,配置环境变量

5,下载 http://jayli.github.com/gallery/vim/jslint.vim 文件,覆盖 C:/Program Files/vim/vim72/plugin/javascript/jslint.vim

6,修改这个 jslint.vim 文件,将 vim 安装路径替换为绝对路径,找到

expand("~/vimfiles/ftplugin/javascript")

修改为

expand("C:/Program Files/Vim/vim72/plugin/javascript")

7,完成,打开一个 js 文件,用F4唤醒语法检查,再按F4关闭语法检查

ps:其实很早之前,明城就介绍过使用 JavaScriptLint + Vim进行语法检查[注2],这种方法也相当不错,但使用体验稍有缺憾,语法提示单独占用视窗,看起来更像专门的 Debug 操作,而我更希望在编码过程中,实时监控我刚写过的代码的正确性,而给出语法提示也不应当进入一个“Debug”过程,只要编辑过程中,我用眼睛余光能注意到光标所在行的错误提示就可以了,没必要打开一个视窗给我看我有多少bug,另外,JavaScriptLint 的语法检查非常苛刻,我希望能有更加实用更加宽松的语法检查。很碰巧,jsLint 可以满足我这种挑剔的需求

  • [注1]JavaScriptLint 的语法检查相比老道的 jsLint 更为苛刻,大量鸡肋警告非常干扰视线,比如 jquery-1.4.2.js 通过 JavaScriptLint 检查有164个警告,通过 jsLint 检查只有10个警告,正是因为此,JavaScriptLint 实际上增加了我们编码的负担。
  • [注2]:明城的文章中有小小的误导,JavaScriptLint 和 jsLint 是两个不同的东东,这里推荐的是老道的 jsLint,而不是JavaScriptLint。
posted at