3

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

默认键盘映射是这样的:

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

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

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

4

3 回答 3

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

    `{ "keys": ["super+l"], "command": "my_expand_selection_to_line" }`
    

如果在 Windows 上,你会想要["ctrl+l"]而不是["super+l"]

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

于 2012-08-13T16:13:49.480 回答
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所需的行数。

于 2012-08-13T21:32:45.910 回答
1

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

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

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

于 2014-07-16T20:55:08.763 回答