有没有人知道如何编辑Sublime Text 2中的“expand_selection”键盘映射,以便它只选择当前行而不是它后面的换行符?
默认键映射是:
{“keys”:[“ctrl + l”],“command”:“expand_selection”,“args”:{“to”:“line”}}
问题在于,当您选择该行并开始用新代码替换它时,其后面的行会向上移动到当前行。
我假设您将“args”部分中的“line”替换为其他内容,但我似乎无法在任何地方找到此文档。
答案 0 :(得分:4)
我也找不到任何选择当前行而没有选择下一行的示例/文档。幸运的是,我们可以制作一个执行此操作的命令。
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)
在您的用户.sublime-keymap文件中,添加以下内容:
`{ "keys": ["super+l"], "command": "my_expand_selection_to_line" }`
如果在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} }