开发工具 用 TextMate 的朋友帮帮忙?

xiaolai · 2012年10月15日 · 最后由 xiaolai 回复于 2012年10月16日 · 2423 次阅读

我在编辑.html.erb 文件的时候,comment 以及 block comment 快捷键都失灵,怎么办?

line comment, command + / 出来的是# block comment, option + command + / 出来的是 <!-- -->

原本应该是 <%-# %>

<% if false %>
...
<% end %>

啊!

我看了 Ruby on Rails bundle 里面,有 Language Grammars, html (Rails),里面有 command 的定义……

墙裂怀疑当前文件被 TM 认成别的什么语言了。手动指定一下语言试试看

#1 楼 @southwolf 语言识别没问题……

如果确定语言识别没问题 那就要到 bundles 里去看一下了。

和这两个命令的快捷键冲突了:

Bundles -> Source -> Comments -> Comment Line / Insert Block Comment

改一下

btw,用快捷键查命令的方法:

Bundles -> Select Bundle Item,中间选项选 Key Equivalent

#5 楼 @luikore 我试了一下,把 Source 的去掉之后,什么反应都没有了,连<!-- 都没办法显示了。

#6 楼 @xiaolai 我搞错了... 注释都是通过 Source 的这个 command 添加的,它读取语言配置的环境变量 TM_COMMENT_START, TM_COMMENT_END 来完成注释,因为 erb 的 scope 是 text.html.ruby,但 text.html.ruby 没配置这两个环境变量就 fallback 到 text.html 的配置了

加上 <%# %> 的一个办法如下: 新建一个 language preference, 名字随意,所在包随意,将 scope 设置成 text.html.ruby

配置内容是设置环境变量

{shellVariables = (
        {   name = 'TM_COMMENT_START';
            value = '<%# ';
        },
        {   name = 'TM_COMMENT_END';
            value = ' %>';
        },
        {   name = 'TM_COMMENT_MODE';
            value = 'line';
        },
);}

如果将 TM_COMMENT_MODE 设置成 block,cmd + / 的结果就是整块注释而不是每行都加一遍。

貌似只允许一组带 comment end 的配置,我还不知道 <% if false %>...<% end %><%# ... %> 共存的办法...

#7 楼 @luikore 谢谢你!我有个疑问:我如何才能知道 erb 的 scope 是text.html.ruby啊?

@xiaolai 在 bundle development 那个 bundle 里有个命令 show scope :)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号