在TextMate中设置HTML代码审查,核心思路是通过Bundle机制调用外部校验工具,并把结果回显到编辑器。下面先说明具体的配置路径与处理办法。

一、准备HTML校验工具
常见做法是使用本地安装的HTML验证程序,例如基于Node的htmlhint,或者Python写的html5lib配合自定义脚本。以htmlhint为例,先确保全局可用:
# 安装htmlhint命令行工具 npm install -g htmlhint # 验证是否可用 htmlhint --version
二、在TextMate中新建或编辑Bundle
打开TextMate,进入 Bundles 菜单选择 Bundle Editor,再点击 Show Bundle Editor。可以新建一个叫 HTML Review 的Bundle,或在已有的HTML Bundle里添加命令。
添加命令的基本设置
- Command Name:填写 HTML Lint
- Activation:选择 Save 或 Key Equivalent(如 Ctrl+Shift+H)
- Input:选 Document
- Output:选 Show as HTML 或 Create New Document
命令内容示例
在命令编辑框中填入以下脚本,让TextMate把当前文档传给htmlhint处理:
#!/bin/bash # 从标准输入读取TextMate传入的HTML内容 content=$(cat) # 写入临时文件 tmpfile=$(mktemp /tmp/tm_html.XXXXXX.html) echo "$content" > "$tmpfile" # 调用htmlhint并输出结果 htmlhint "$tmpfile" 2>&1 rm -f "$tmpfile"
注意上面代码中,大于号和小于号都做了转义,以避免被Shell误解析。如果Output设为 Show as HTML,可以在命令最外层包一层简单页面样式。
三、处理审查结果的显示
当htmlhint报出错误时,输出形如 line 12, col 3: tag must be paired。我们可以在Bundle命令里用sed稍作整理,使其更符合阅读习惯:
#!/bin/bash tmpfile=$(mktemp /tmp/tm_html.XXXXXX.html) cat > "$tmpfile" result=$(htmlhint "$tmpfile" 2>&1) if [ -z "$result" ]; then echo "<p>HTML审查通过,未发现错误</p>" else echo "<pre>$result</pre>" fi rm -f "$tmpfile"
四、使用TextMate自带语法检查补充
如果不想依赖外部工具,也可利用TextMate的 Language Grammar 高亮异常标签。但真正的结构审查仍需上面说的lint命令。对于规则文件,可把 .htmlhintrc 放在项目根目录,命令中加上 --config 参数即可。
小提示:在Bundle的Info.plist里,可以使用 TM_FILEPATH 环境变量直接拿到当前文件路径,省去临时文件步骤。
五、常见问题处理
| 问题 | 处理方法 |
|---|---|
| 命令无输出 | 检查Activation与Input设置,确认npm全局路径在TextMate的环境PATH中 |
| 中文乱码 | 在脚本开头加 export LANG=zh_CN.UTF-8 |
| 报错找不到htmlhint | 用 which htmlhint 得到绝对路径并写进命令 |
通过上述设置,就能在TextMate中稳定地做HTML代码审查,把标签错误和属性问题挡在保存或提交之前。