ST2 Keymap:“expand_selection”的参数

时间:2012-08-13 05:51:17

标签: sublimetext2

有没有人知道如何编辑Sublime Text 2中的“expand_selection”键盘映射,以便它只选择当前行而不是它后面的换行符?

默认键映射是:

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

问题在于,当您选择该行并开始用新代码替换它时,其后面的行会向上移动到当前行。

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

3 个答案:

答案 0 :(得分:4)

我也找不到任何选择当前行而没有选择下一行的示例/文档。幸运的是,我们可以制作一个执行此操作的命令。

  1. 创建文件User/my_utilities.py。我在这里坚持所有随机自行开发的ST命令。
  2. 坚持下去:

    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)
    
  3. 在您的用户.sublime-keymap文件中,添加以下内容:

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

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

答案 1 :(得分:3)

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_selection命令移至ctrl+shift+l(覆盖split_selection_into_lines):

{ "keys": ["ctrl+shift+l"], "command": "expand_selection", "args": {"to": "line"} },

现在要选择当前行,选择ctrl+l,然后将选择范围扩展到下方的行,按ctrl+shift+l可以找到所需数量的行。

答案 2 :(得分:1)

将此添加到我的"密钥绑定 - 用户"为我做了这件事:

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

信用:http://wesbos.com/sublime-text-end-of-line-wrap/