Sublimetext2 ST2键映射:参数用于;展开“U选择”;

Sublimetext2 ST2键映射:参数用于;展开“U选择”;,sublimetext2,Sublimetext2,有人知道如何编辑Sublime Text 2中的“expand_selection”(展开选择)键映射,使其仅选择当前行,而不选择其后的换行符吗 默认键映射如下所示: {“keys”:[“ctrl+l”],“command”:“expand_selection”,“args”:{“to”:“line”} 问题是,当您选择行并开始用新代码替换它时,它后面的行将上移到当前行 我假设您将“args”部分中的“line”替换为其他内容,但我似乎在任何地方都找不到该文档。我也找不到任何不选择下一行而选择当

有人知道如何编辑Sublime Text 2中的“expand_selection”(展开选择)键映射,使其仅选择当前行,而不选择其后的换行符吗

默认键映射如下所示:

{“keys”:[“ctrl+l”],“command”:“expand_selection”,“args”:{“to”:“line”}

问题是,当您选择行并开始用新代码替换它时,它后面的行将上移到当前行


我假设您将“args”部分中的“line”替换为其他内容,但我似乎在任何地方都找不到该文档。

我也找不到任何不选择下一行而选择当前行的示例/文档。幸运的是,我们可以发出这样的命令

  • 创建一个文件
    User/my_utilities.py
    。我把所有随机开发的ST命令都放在这里
  • 把这个放进去:

    import sublime, sublime_plugin
    
    class MyExpandSelectionToLine(sublime_plugin.TextCommand):
        def run(self, edit):
            regions = []
            for s in self.view.sel():
                line = self.view.line(sublime.Region(s.begin(), s.end()))
                if line.end() == s.end():
                    # we're at the end of a line, so select the next line
                    line = self.view.line(sublime.Region(s.end(), s.end() + 1))
                regions.append(line)
            for r in regions:
                self.view.sel().add(r)
    
  • 在User.sublime密钥映射文件中,添加以下内容:

    `{ "keys": ["super+l"], "command": "my_expand_selection_to_line" }`
    
  • 如果在Windows上,您将需要
    [“ctrl+l”]
    而不是
    [“super+l”]


    这将覆盖默认的命令绑定,用于选择一行来运行我们刚刚编写的新命令。

    Matt的解决方案非常有效,另一个选项是录制宏并将其分配给
    ctrl+l
    。这样做的另一个好处是只选择第一个代码字符,因此新行缩进的级别与要替换的行相同

    下面是宏:

    [
        {
            "args":
            {
                "extend": false,
                "to": "bol"
            },
            "command": "move_to"
        },
        {
            "args":
            {
                "extend": true,
                "to": "eol"
            },
            "command": "move_to"
        }
    ]
    
    这将保存为
    \Packages\User
    (Windows)中的MacroName.sublime-macro

    这是关键地图:

    { "keys": ["ctrl+l"], "command": "run_macro_file", "args": {"file": "Packages/User/MacroName.sublime-macro"} }
    
    由于这会取消通过重复
    ctrl+l
    来选择其他行的功能,因此我还将
    expand\u selection
    命令移动到
    ctrl+shift+l
    (这会覆盖
    split\u selection\u into\u lines
    ):

    因此,现在要选择当前行,请选择
    ctrl+l
    ,然后要将选择扩展到下面的行,请按
    ctrl+shift+l
    ,按任意行数。

    将此添加到我的“键绑定-用户”中为我做到了:

    { "keys": ["shift+end"], "command": "move_to", "args": {"to": "hardeol", "extend": true} }
    

    信用证:

    为了补充您的答案,以下是扩展选项的可用参数:
    bol、hardbol、eol、hardeol、bof、eof、方括号、行
    。这里的更多信息:嗯。这些对我都不起作用:
    bol,hardbol,eol,hardeol,bof,eof
    。但是,有几个选项没有记录在案,它们确实起作用:
    缩进、标记
    。我也在默认键绑定中找到了
    scope
    ,但无法使其正常工作。我和Matt在“eol”、“hardeol”等方面有相同的问题,但命令链接是一个很好的参考——感谢发布。有趣。嗯,非官方文档是开源的,可以在github上找到:因此,如果您发现任何错误,请随时发送包含更改的pull请求。现在我们有了官方文档:
    展开选择的参数:
    范围
    括号
    { "keys": ["shift+end"], "command": "move_to", "args": {"to": "hardeol", "extend": true} }