在崇高文本2中智能缩进括号(括号)

fin*_*bob 6 maxscript sublimetext2

我有一个非常甜蜜的设置,用于编辑和运行来自sublime文本2内的maxscript.

我最近想要的一件事是用正常的圆括号来模拟或复制花括号的行为

编辑: 对不起 - 当我不在时,Chrome决定我在那里完成编辑:(

如果我键入,if (x) then {那么enter我将得到一个格式良好的块,现在在箭头处的插入符号

if(x) then {
    <-
}
Run Code Online (Sandbox Code Playgroud)

但我无法找到崇高文本藏在哪里.

我想将此行为复制到正常的圆括号()而不是获取

if (x) then (
    <-)
Run Code Online (Sandbox Code Playgroud)

fin*_*bob 6

我已经在大括号中找到它的位置,它只是在默认的键绑定中.我复制了该部分"keys": ["enter"]并用"("而不是"{"替换了正则表达式.

我还必须复制内置AddLineInBraces.sublime-macro并添加{"command": "left_delete" },到它:

[
    {"command": "insert", "args": {"characters": "\n\n"} },
    {"command": "left_delete" },
    {"command": "move", "args": {"by": "lines", "forward": false} },
    {"command": "move_to", "args": {"to": "hardeol", "extend": false} },
    {"command": "reindent", "args": {"single_line": true} }
]
Run Code Online (Sandbox Code Playgroud)

如果正则表达式匹配,则使输入击键调用该宏.这给出了完美的结果!

事实上,我最后一直在减少MXS,所以还没有真正玩过它.

感谢Ghoul Fool提出的建议,但看了之后我想要一个更简单的解决方案.

在回答FrozenKiwi的过程中,我将来自不同地方的几个插件混合在一起,这样我就可以从ST2向Max发送maxscript了.这是重物的链接.它确实涉及一些工作以使其运行但确实非常方便.

其余的只是各种ST2优点的点滴和单调:shift + enter来评估选择,ctrl + e来评估所有,很多(和很多)的宏,例如"for"+ tab会写 format "var: %\n" (var as string)

我不知道我是否可以将它作为一个包发布,因为它来自不同的来源.我想,我可以检查每件事的许可证.

我唯一剩下的障碍是无法将输出从maxscript监听器重定向到ST2,我已经在互联网上搜索过,似乎还没有人做过,我并不热衷于自己尝试.我甚至不知道Maxscript本身是否可以使用 - 它可能必须是使用SDK的C++插件 - 但我迄今为止使用C++插件的经验很少.我不怀疑它可以做到.

  • 不想编辑你的帖子,但以防万一其他人想知道在哪里进行这些更改(因为我花了一些时间来弄清楚):复制上面的命令代码并保存为`添加行在Braces.sublime-你的`〜/ Library/Application Support/Sublime Text 3/Packages`目录中的宏`然后只需将键绑定的文件引用更改为`res:// Packages/User/_ <filename> _` - Sublime知道在哪里要查找目录,无需添加完整路径.(对于ST3,ST2应该有类似的目录结构) (4认同)