Sublime Text:将多个选择转义到最后一个选择区域而不是第一个

eri*_*des 6 sublime-text

在 Sublime Text(使用 Sublime Text 3)中,您可以通过按 Esc 键退出多选/多插入符号模式。执行此操作时,只会保留第一个选择/插入符号。

有没有办法让它只保留最后一个选择/插入符号?

我经常发现自己点击了转义键,然后需要将光标移动到曾经是最后一个选择的位置。

用例:

我使用多项选择键入此内容:

int foo(
  int x,
  int x,
  int x,
  int x,
)
Run Code Online (Sandbox Code Playgroud)

我想去掉最后一个逗号来:

int foo(
  int x,
  int x,
  int x,
  int x
)
Run Code Online (Sandbox Code Playgroud)

我想按 Esc 键,然后在最后一个int x,.

r-s*_*ein 6

我认为这不是 sublime text 中的默认命令。但是,您可以轻松地自行创建此行为。只需按下Tools >> New Plugin...并粘贴以下内容:

import sublime_plugin


class SingleLastSelectionCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        view = self.view
        if len(view.sel()):
            last = view.sel()[-1]
            view.sel().clear()
            view.sel().add(last)
Run Code Online (Sandbox Code Playgroud)

然后创建一个键绑定:

{ "keys": ["escape"], "command": "single_last_selection", "context":
    [
        { "key": "num_selections", "operator": "not_equal", "operand": 1 }
    ]
},
Run Code Online (Sandbox Code Playgroud)

可能需要从默认键盘映射中复制所有转义键绑定以保持操作优先级(在删除多个光标之前隐藏自动完成等)。