如何在Sublime Text 2中启用Gemfile的语法高亮?

21

我最近开始使用Sublime Text 2。这是一个很棒的编辑器。它能很好地突出显示Ruby代码,但它却不能突出Gemfile。

有没有办法让它做到?

我发现了这个Gist,但它没有关于如何使用它的说明。


你可以告诉编辑器应用 Ruby 语法高亮。毕竟 Gemfile 是 Ruby 语法。但是,你要放什么到你的 Gemfile 中呢?你不会把整个 Rails 应用程序放进去吧? - three
1
@three,一点也不是!只是每当我打开Gemfile时,就没有语法高亮。我刚找到了选项,但它无法记住我的选择。每次打开文件都要重新设置。 :/ - Mohamad
4个回答

34

至少有三种选择:

  1. 手动切换语法(不推荐,但很容易;无需解释)
  2. 在Ruby语法文件列表中添加"Gemfile"("Gemfile"
  3. 使用你链接的插件并为其创建一个包(package)

1. 无需解释,但很方便的技巧

你可以将一个按键绑定到设置语法而不需要移动鼠标。

我通过向我的用户键绑定添加以下内容将语法更改绑定到 Ctrl-Opt-Space

[
  { "keys": ["ctrl+alt+space"], 
    "command": "show_overlay", 
    "args": { "overlay": "command_palette", "text": "Set Syntax: " } }
]

2. 将"Gemfile"添加到Ruby语法文件列表中

  • Linux: ~/.config/sublime-text-2/Packages/Ruby/Ruby.tmLanguage
  • OS X: ~/Library/Application Support/Sublime Text 2/Packages/Ruby/Ruby.tmLanguage
  • Windows: %APPDATA%/Sublime Text 2/Packages/Ruby/Ruby.tmLanguage

您还可以使用菜单选项Preferences -> Browse Packages并进入Ruby包来到达那里。一旦进入文件,它将很明显:<array>元素具有类似Ruby的文件名。 添加<string>Gemfile</string>,就完成了。

可能会在升级时覆盖设置;我不确定ST2如何运作-使用代码进行操作可能更清晰,就像片段中所示。

3. 使用您链接的片段

需要更多的工作(以及纠正一个语法错误)。您可以通过在Packages中创建一个目录(请参阅上述位置)手动执行此操作,或者创建一个实际的包并允许ST2安装它。

我创建了一个名为"Syntax"的测试包,并将片段复制到其中,重新启动ST2,并打开Gemfile。修改需要添加一个冒号(新的代码片段),简而言之:

elif name[-3] == "erb": # Needed a semi-colon here.
  set_sintax(view, "HTML (Rails)", "Rails")

1
在OSX上,它是~/Library/Application Support/Sublime Text 2/Packages/Ruby/Ruby.tmLanguage。我把它放在了<string>Rakefile</string>的下面。这个问题一直困扰着我。感谢你和Mohamad的提问! - Unixmonkey
@Unixmonkey 哦,对了;我本来想加上的,但是被分心了。我认为Python的方法更有趣,但是运行起来更麻烦(主要是因为我直到最后打开控制台视图才注意到语法错误 :/)。 - Dave Newton
谢谢,@DaveNewton!如果有办法确保这不会被 Ruby 包更新搞砸(例如将其移动到用户范围的设置文件中),我很乐意听取。 - Ben Kreeger
@BenjaminKreeger 我不确定它是否百分百无故障,但在您自己的片段中使用它应该不会被覆盖。不过,我对包装工作的具体方式和位置还不是很清楚。 - Dave Newton

5

如果您使用的是Sublime Text 3,可能无法在软件包中找到“Ruby语法文件列表”。

大多数其他在线解决方案对我来说很难理解。

我通过手动更改Gemfile到Ruby来解决了这个问题,在Sublime Text 3中打开文件后,在右下角文件扩展菜单项中选择Ruby(这是我直到现在每次打开文件时所做的操作)。

一旦您选择了ruby,然后进入“首选项” -> “更多设置” -> “语法特定-用户”。

{
  "extensions":
  [
    "Gemfile",
    "Gemfile.lock"
  ]
}

当您导航到语法特定用户时,它会打开一个针对该文件语言进行语法突出显示的文件。您可能需要将文件改回默认的文件(我的是“Rd(R文档).sublime-settings”),并从该语法突出显示文件中删除Gemfile。
在Ubuntu中,这些文件存储在:
~/.config/sublime-text-3/Packages/User

2
ST2的DetectSyntax插件提供了更全面的文件高亮解决方案-它允许基于规则进行文件高亮。它聪明到足以理解Rails文件、使用.rb扩展名的其他文件和标准Ruby文件之间的区别。
标准规则包括GemfileRakefileGuardfile和其他与Ruby匹配的语法格式。
请参见GitHub上的DetectSyntax

-1

您可以通过将HTML.tmLanguage文件复制到User/文件夹中来实现此目的,这样它就不会被更新覆盖。


那对于 Gemfile 的语法高亮有什么影响吗? - Dave Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接