5

我是 Sublime Text 键绑定的新手。有没有办法,当插入符号不在行尾时,在末尾插入分号?在宏中,我猜它是: go to eol -> insert ; -> 回来。但我不知道如何做回来的部分。

谢谢。

4

3 回答 3

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)
于 2013-06-06T05:16:07.107 回答
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 > Key Bindings - User
  • 为您的新宏创建快捷方式,例如Ctrl+ ;eg

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

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

享受。

于 2013-10-04T18:12:27.717 回答
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" }
于 2015-12-15T09:55:12.450 回答