开发工具 终于搞定了万年老大难问题!Sublime 的 Haml 语法高亮!

Xenofex · November 01, 2016 · Last by flemon1986 replied at November 03, 2016 · 3117 hits
使用前 使用后

先放解决方案

  1. 禁用自带 Rails 插件:
    1. 使用 Package Control 的 Disable Package 命令:按 Command(Ctrl) + Shift + P 打开命令窗,输入 Disable Package,回车,输入 Rails,回车
  2. 如果你安装过单独的 Haml 插件,卸载掉
  3. 把下面链接中的两个文件,解压缩放到 Sublime 的 User Package 目录
    1. 方法是在 Mac 上点左上角 Sublime Text 菜单、Preferences、Browse Packages...
    2. 把两个压缩包放在这个目录,然后解压

百度网盘下载 Sublime Haml Fix

背景

  1. Sublime 天生就支持 Haml,但是它不是那么完善
  2. 一些人不满意这个自带 Haml,自己去下载一个叫 Haml 的插件。发现有一些改进,但是还是不完善,而且 Set Syntax 命令后面还会出现两个 Ruby Haml
    1. 如果你使用了这个 Haml 插件,会发现:coffeescript是可以高亮的,但是:coffee不行
    2. 有的时候会发现,如果:coffeescript不顶格写,就没法高亮

经研究,真相如下:

  1. Sublime 自带一个 Rails 插件,里面有一份 Ruby Haml 语法定义。因此如果安装了单独的 Haml 插件,Set Syntax 命令会有两个 Ruby Haml(Command(Ctrl) + Shift + P 输入 Set Syntax: Ruby Haml 有两项)
  2. 独立 Haml 插件的 Haml,要比自带 Rails 内的 Haml 完善,但是仍然不是 100% 准确。它实际上直接使用了非官方版的 TextMate 插件。

解决思路:

  1. 删掉自带 Rails 插件里面的 Haml 语法定义,以外部的 Haml 插件为准
  2. 修正外部 Haml 插件中的错误
    1. 好在 Sublime 继承了 TextMate 的传统,支持他的语法定义插件,更好的是 Atom 也支持他两个的插件,而且 Atom 中的 Haml 看上去没什么问题
    2. 只是 Atom 里的 Haml 语法定义是用 CSON 写的,但是它跟 Haml 插件中的 Plist 版的完全一样。照着 Atom 中的定义,可以去修正 Haml 插件。

干脆大家都推荐一下 Rails 相关的 Sublime Text 插件吧。

Rails Latest Migration - https://github.com/alexpls/Rails-Latest-Migration
编辑 Migration 非常好用

Toggle RSpec Focus - https://packagecontrol.io/packages/Toggle%20RSpec%20Focus
指定运行某一个用例

#1 楼 @greatghoul 这两个很有帮助。Vim 里是 Rails.vim 已经包含着两个功能了

#2 楼 @Xenofex 最早也喜欢折腾 vim,各种插件,用着也的确顺手,在 terminal 下编辑,随时 ctrl+z 就能切换到终端,但买了 Sublime 后觉得不用太浪费,意外的觉得比 vim 顺手多了,再后来买了 RubyMine,写 Rails 就比较少用 Sublime 了。

如果平时做一些小改动,我一般会开 Sublime,如果要做重构什么的比较多,果断 RubyMine,功能太强大了,跑测试也方便至极。

vimer 飘过。。。

#4 楼 @flemon1986 Vim 党万年问题:Coffeescript 的优质高亮。我看了一下 coffeescript.vim,暂时没太明白

我不玩 coffeescript。。。继续飘。。。

#6 楼 @flemon1986 目前来说在 rails 里面,仍然是 coffeescript 比较顺畅,配置容易,同时兼容内嵌和外联,跟 sprockets 集成的好。Coffeescript 解决了低版本 JavaScript 的一些棱角,虽然不如 ES6 先进,但是在 Rails 工具链上胜出。

哦。。。现在在玩 opal。。。对 javascript 不是很感冒的说。。。不过谢谢知识分享,学习了

You need to Sign in before reply, if you don't have an account, please Sign up first.