有谁知道如何在 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-keymap 文件中,添加以下内容:
`{ "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_selection
命令移至ctrl+shift+l
(覆盖split_selection_into_lines
):
{ "keys": ["ctrl+shift+l"], "command": "expand_selection", "args": {"to": "line"} },
因此,现在要选择当前行,选择ctrl+l
然后将选择扩展到下面的行,按ctrl+shift+l
所需的行数。
将此添加到我的“键绑定 - 用户”为我做了:
{ "keys": ["shift+end"], "command": "move_to", "args": {"to": "hardeol", "extend": true} }