Sublimetext2 在Sublime中退出用花括号括起来的块

Sublimetext2 在Sublime中退出用花括号括起来的块,sublimetext2,Sublimetext2,假设我在Sublime中有以下代码: if (condition) { // code } 当我的光标位于//code的末尾时,我想设置一个键绑定(例如Tab),它将退出if语句块并将其移动到}的末尾。谢谢。您可以将“代码片段到”选项卡中的$0添加到该位置: <snippet> <description>If Condition</description> <content><![CDATA[if (${1:/* c

假设我在Sublime中有以下代码:

if (condition) {
    // code
}

当我的光标位于
//code
的末尾时,我想设置一个键绑定(例如Tab),它将退出if语句块并将其移动到
}
的末尾。谢谢。

您可以将“代码片段到”选项卡中的
$0
添加到该位置:

<snippet>
    <description>If Condition</description>
    <content><![CDATA[if (${1:/* condition */}){
      ${2:/* code */}
    }${0}]]></content>
    <tabTrigger>if</tabTrigger>
    <scope>source.c</scope>
</snippet>

如果条件
如果
资料来源c
该插件可以本机提供此功能。。。某种程度上。在其示例快捷方式文件中,
example.sublime keymap
,有一个“转到右括号”示例键绑定:

// Go to right bracket
{
    "keys": ["ctrl+alt+super+down"],
    "command": "bh_key",
    "args":
    {
        "lines" : true,
        "plugin":
        {
            "type": ["__all__"],
            "command": "bh_modules.bracketselect",
            "args": {"select": "right"}
        }
    }
},
唯一的问题是,调用的
bracketselect
命令将光标移动到右括号的左侧,需要另一次按键才能完全脱离该块。我认为那不是你想要的

别担心!谢天谢地,BracketHighlighter提供了一个非常直观的插件API,我发现我可以修改
bracketselect
插件来创建一个命令,该命令将从括号内的块中退出,基本上与
bracketselect
相同,但是它将光标移动到右括号的右侧而不是左侧,并且不需要任何额外的参数

如果尚未安装,则首先需要安装

下一步,保存(如果链接曾经消失,请参见下文)到

然后,将此条目添加到用户密钥绑定的顶部(
首选项->密钥绑定-user
):

我不建议使用
tab
作为触发键,因为
tab
在扩展中已经扮演了重要角色。当然,您可以定义一个特殊的选项卡,在其中使用
选项卡
,但这取决于您自己

如果Github曾经宕机,下面是插件代码:

导入bh_插件
进口升华
默认_标记=[“cfml”、“html”、“angle”]
类BlockEscape(bh_plugin.BracketPluginCommand):
def运行(自我、编辑、名称、标记=默认标记):
当前左,当前右=自选择[0]。开始(),自选择[0]。结束()
左,右=self.left,self.right
first,last=left.end,right.begin
如果左,结束!=右。结束:
如果标签中的名称和left.size()>1:
first,last=right.begin+1,right.begin+1
如果first==当前\左,last==当前\右:
first,last=right.end,right.end
其他:
first,last=right.begin,right.begin
如果first==当前\左,last==当前\右:
first,last=right.end,right.end
其他:
#没有第二个括号,所以只需选择第一个括号
如果标签中的名称和left.size()>1:
first,last=left.begin+1,left.begin+1
其他:
first,last=right.end,right.end
如果first==当前\左,last==当前\右:
first,last=right.end,right.end
self.selection=[崇高区域(第一个+1,最后一个+1)]
def plugin():
返回闭塞逃逸

由于我或多或少地把这个插件拼凑在一起,它可能无法正常工作。在这种情况下,您可以自己编辑它或在上留下评论。

这个答案与编写代码片段有关,而不是像问题所暗示的那样编写代码的一般情况。你确定这是一个恰当的回答吗?答案回答了OP的问题。插件和代码片段是在ST2中完成这些任务的最佳方式。您给我的代码片段只适用于特定情况。我所要求的是能够从语句中“制表符”——可以是if、while、for等。另一个例子是,我有一个键绑定,当我在结束括号/引号之前按tab键时,可以从括号和引号中制表符。但这只适用于在线。这不是您在OP中要求的。非常感谢,我将键绑定设置为shift+enter,它工作得非常完美。
Preferences -> Browse Packages... -> BracketHighlighter/bh_modules/blockescape.py
{
    "keys": ["tab"],
    "command": "bh_key",
    "args":
    {
        "lines" : true,
        "plugin":
        {
            "type": ["__all__"],
            "command": "bh_modules.blockescape"
        }
    }
},