3

我正在使用如下所示的 Handlebars (.hbs) 文件:

<div>
  ...

  _
  <button {{action "signin"}}>Sign in</button>
</div>

当我将光标放在下划线位置并输入大括号 {. 它将整<button>行包裹在大括号中:

{
<button {{action "signin"}}>Sign in</button>
}

但我想要的只是:

{}
<button ...

[ 和 ( 没有这种行为。有什么方法可以禁用 Sublime Text 的此功能?我查看了键绑定,但找不到方括号和大括号之间的区别,使它们的行为不同。

4

2 回答 2

1

我的解决方案依赖于您应用了语法,因此可能会也可能不会开箱即用。

尝试将以下内容添加到您的用户键绑定中。

{ "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{${0:$SELECTION}}"}, "context":
    [
        { "key": "indented_block", "match_all": true },
        { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true },
        { "key": "selector", "operator": "equal", "operand": "source.handlebar", "match_all": true },
    ]
}

我猜到了车把的范围,所以如果需要,请更改它。如果您没有与文件类型关联的语法定义,请发表评论,我会更新我的答案。

为了将来参考,我发现该命令是通过在控制台中执行“sublime.log_commands(True)”来运行的。从那里我找到了相关的键绑定并创建了一种方法来覆盖特定类型的文件。

于 2013-07-28T05:59:59.040 回答
0

我在 JSX 文件的 Sublime Text 3 中遇到了同样的问题。在阅读了 skuroda 回答下的评论后,我能够通过复制/覆盖“wrap_block”绑定的键和上下文但从“insert_snippet”绑定中插入命令和参数来修复它。

看起来像这样(添加到用户键绑定列表):

    { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$0}"}, "context":
        [
            { "key": "indented_block", "match_all": true },
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
            { "key": "following_text", "operator": "regex_match", "operand": "^$", "match_all": true },
        ]
    },
于 2017-07-15T21:35:21.690 回答