如何在 sublime text 的 shift+enter 上绑定(结束,输入)?

How to bind (end, enter) on shift+enter in sublime text?

我非常喜欢 PyCharm 中 Shift + Enter 的实现方式:

Start a new line after the current one, positioning the caret in accordance with the current indentation level (equal to sequential pressing End, Enter).

我希望 Shift+Enter 在 Sublime Text 3 中以相同的方式工作。

我发现有一个

{ "keys": ["end"], "command": "move_to", "args": {"to": "eol", "extend": false} }

对于 "END" 和

{ "keys": ["shift+enter"], "command": "insert", "args": {"characters": "\n"} },

为 "Shift+enter"。但我不知道如何将它们组合起来。

有几种方法可以使多个命令按顺序执行以响应键绑定、菜单项选择、命令面板输入等。

如果您对 运行 感兴趣的命令都是 TextCommand 类型(这基本上意味着它们移动光标、更改选择或以某种方式编辑缓冲区),那么最简单的方法是创建一个宏,然后将其绑定到一个键。

例如:

  1. Select Tools > Record Macro
  2. 执行您要记录的操作
  3. Select Tools > Stop Recording MacroTools > Save Macro

每个宏命令都有一个关联的键绑定,您也可以使用。

完成后,您的 User 包中将保存一个 sublime-macro 文件。

然后您可以使用 run_macro_file 命令将其绑定到一个键。例如:

{ 
  "keys": ["shift+enter"], 
  "command": "run_macro_file", 
  "args": {
      "file": "res://Packages/User/your_macro.sublime-macro"
  } 
},

如上所述,这仅适用于 TextCommand 命令;以某种方式直接修改缓冲区的命令,包括选择和光标位置。这意味着您不能在宏中记录 Find/Replace 命令;此类命令不会记录在生成的宏文件中。

做同样事情的另一种方法是使用扩展包,例如Chain of Command。这打破了上面的限制,因为它允许你指定任何你想要的命令,只要一个可用。但是,此方法需要知道您要执行的命令。

在您的示例的特定情况下,Ctrl+Enter 键已经通过宏方法完成了您想要的操作。如果愿意,您可以使用如下所示的键绑定,使其适用于您想要的键:

{ 
  "keys": ["shift+enter"], 
  "command": "run_macro_file", 
  "args": {
      "file": "res://Packages/Default/Add Line.sublime-macro"
  } 
},