Sublime文本绑定:在eol处插入分号并返回

时间:2013-06-06 01:33:47

标签: macros sublimetext2 key-bindings

我是Sublime Text键绑定的新手。有没有办法,当插入符号不在行尾时,在末尾插入分号?在宏观上我猜它是:去eol - >插入 ; - >回来。但是我不知道怎么回事。

感谢。

3 个答案:

答案 0 :(得分:6)

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

import sublime
import sublime_plugin

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"})
        view.run_command("insert", {"characters": ";"})
        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)

使用命令semicolon_insert创建密钥绑定。我认为你的宏定义应该是eol而不是eof。

修改 ST2兼容版

import sublime
import sublime_plugin

class SemicolonInsertCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        region_name = "original_cursors"
        view = self.view
        view.add_regions(region_name, list(view.sel()), "")
        view.run_command("move_to", {"extend": False, "to": "eol"})
        view.run_command("insert", {"characters": ";"})
        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)

答案 1 :(得分:4)

录制宏,保存并为其配置快捷方式。

创建宏

复古模式

  • 开始录制宏 q ,然后是 MACRO_ID (LETTER [a-z])
  • 创建书签 Ctrl + F2
  • 移至行尾并进入插入模式 Shift + A
  • 添加分号;并返回命令模式 Esc
  • 转到书签 Shift + F2
  • 删除书签 Ctrl + Shift + F2
  • 停止录制宏 q

您可以重播您的宏: @ ,然后是 YOUR_MACRO_ID

保存宏

  • 转到:工具>保存宏......
  • 为其命名并保存,例如Packages/User/Macros/complete-semi-colon.sublime-macro

为宏

创建快捷方式
  • 打开您的Key Bindings配置文件:Preferences>密钥绑定 - 用户
  • 为新宏创建快捷方式,例如 Ctrl + ; 例如

    { 
        "keys": ["ctrl+;"], 
        "command": "run_macro_file", 
        "args": {
            "file": "Packages/User/Macros/complete-semi-colon.sublime-macro"
        } 
    }
    

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

享受。

答案 2 :(得分:2)

对上面的代码进行轻微修改。添加切换行为。因此,当您再次调用组合键时,将删除分号。这是Sublime Text 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)

要添加键盘快捷键,请将下一行插入“首选项>键绑定 - 用户”:

{ "keys": ["ctrl+alt+enter"], "command": "semicolon_insert" }