Macros 升华文本绑定:在eol处插入分号并返回

Macros 升华文本绑定:在eol处插入分号并返回,macros,sublimetext2,key-bindings,Macros,Sublimetext2,Key Bindings,我是一个新的升华文本键绑定。当插入符号不在行尾时,有没有办法在行尾插入分号?在宏中,我想应该是:转到eol->insert;->回来但我不知道怎么做回来的部分 谢谢。我想你必须使用一个插件,因为你想恢复以前的位置,尽管我可能错了。这是ST3版本 class SemicolonInsertCommand(sublime_plugin.TextCommand): def run(self, edit): region_name = "original_cursors"

我是一个新的升华文本键绑定。当插入符号不在行尾时,有没有办法在行尾插入分号?在宏中,我想应该是:转到eol->insert;->回来但我不知道怎么做回来的部分


谢谢。

我想你必须使用一个插件,因为你想恢复以前的位置,尽管我可能错了。这是ST3版本

class SemicolonInsertCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        region_name = "original_cursors"
        view = self.view
        view.add_regions(region_name, view.sel())
        view.run_command("move_to", {"extend": False, "to": "eol"})
        pos = view.sel()[0].begin()
        last_chr = view.substr(pos-1)
        if last_chr != ';':
            view.run_command("insert", {"characters": ";"})
        else:
            view.run_command("left_delete")
        view.sel().clear()
        cursors = view.get_regions(region_name)
        for cursor in cursors:
            view.sel().add(sublime.Region(cursor.b, cursor.b))
        view.erase_regions(region_name)
导入升华
导入升华插件
类分号insertCommand(升华插件.TextCommand):
def运行(自我,编辑):
region\u name=“原始游标”
view=self.view
view.add_区域(区域名称,view.sel())
view.run_命令(“move_to”,{“extend”:False,“to”:“eol”})
view.run_命令(“插入”,{“字符”:“;”})
view.sel().clear()
游标=视图。获取区域(区域名称)
对于游标中的游标:
view.sel().add(升华区域(cursor.b,cursor.b))
查看。删除区域(区域名称)
使用命令
分号\u insert
创建密钥绑定。我以为你的宏定义应该是eol而不是eof

编辑: ST2兼容版本

导入升华
导入升华插件
类分号insertCommand(升华插件.TextCommand):
def运行(自我,编辑):
region\u name=“原始游标”
view=self.view
视图。添加区域(区域名称,列表(view.sel()),“”)
view.run_命令(“move_to”,{“extend”:False,“to”:“eol”})
view.run_命令(“插入”,{“字符”:“;”})
view.sel().clear()
游标=视图。获取区域(区域名称)
对于游标中的游标:
view.sel().add(升华区域(cursor.b,cursor.b))
查看。删除区域(区域名称)
录制宏,保存宏,并为其配置快捷方式。 创建宏 以复古模式

  • 开始录制宏q,后跟宏ID(字母[a-z])
  • 创建书签Ctrl+F2
  • 移动到行尾并进入插入模式Shift+A
  • 添加分号
    并返回到命令模式Esc
  • 转到书签Shift+F2
  • 删除书签Ctrl+Shift+F2
  • 停止录制宏q
您可以重播您的宏:@后跟您的\u宏\u ID

保存宏
  • 转到:工具>保存宏
  • 命名并保存它,例如
    Packages/User/Macros/complete分号。sublime macro
为宏创建快捷方式
  • 打开密钥绑定配置文件:首选项>密钥绑定-用户
  • 为新宏创建快捷方式,例如Ctrl+;e、 g

没有复古模式,你也可以做类似的事情。重要的部分是书签和宏快捷方式配置


享受

对上述代码进行轻微修改。添加切换行为。所以,当您再次调用键组合时,分号将被删除。这是升华文本3版

class SemicolonInsertCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        region_name = "original_cursors"
        view = self.view
        view.add_regions(region_name, view.sel())
        view.run_command("move_to", {"extend": False, "to": "eol"})
        pos = view.sel()[0].begin()
        last_chr = view.substr(pos-1)
        if last_chr != ';':
            view.run_command("insert", {"characters": ";"})
        else:
            view.run_command("left_delete")
        view.sel().clear()
        cursors = view.get_regions(region_name)
        for cursor in cursors:
            view.sel().add(sublime.Region(cursor.b, cursor.b))
        view.erase_regions(region_name)
要添加键盘快捷键,请在“首选项>键绑定-用户”的下一行插入:


我很好奇为什么你需要这个特殊的功能。在什么情况下它是有利的?这是很明显的,但在这种情况下,我被难住了。进入一个新的行业通常不是我想要的。很多时候,我已经有了一个新的行,它会产生另一个效果。它给了我错误的观点。AddijStand(Stand,STR,RealStand)不匹配C++签名:……,有什么帮助吗?抱歉。我用ST3编写了它,忘记了使用
add\u regions
方法对api进行的一些更改。我已经推出了一个兼容ST2的版本。这很有效!我还为接受任何字符设置了一个参数。用于在json文件中添加逗号。非常感谢。如果我想要
在下一行的末尾@菠萝在Thesea中,你可以用宏来实现,正如BullfrogBlues所描述的那样。要录制、停止并保存宏,请转到“工具”菜单。当然,这是假设您有自动缩进设置,因为这将把制表符插入到正确的位置。如果您在其他地方使用书签,原始解决方案的宏可能会出现问题。这太棒了,我一直都在使用它。您知道如何处理在宏的行中预加而不是追加文本时出现的问题吗?书签位置丢失,光标在执行宏之前无法到达其位置?@CertainlyKey作为上下文相关宏的一个示例签出
{ "keys": ["ctrl+alt+enter"], "command": "semicolon_insert" }