改变Sublime Text 3 Vintage Mode中“}”快捷方式的行为

时间:2014-02-23 16:53:25

标签: sublimetext2 sublimetext sublimetext3

在Sublime Text 3 Vintage模式中,键盘快捷键“}”执行以下命令:

{
  "keys": ["}"],
  "command": "set_motion",
  "args": {
    "motion": "move",
    "motion_args": {
      "by": "stops",
      "empty_line": true,
      "extend": true,
      "forward": true,
      "separators": "",
      "word_begin": false
    }
  }
}

我找不到set_motion的好文档,我不知道从哪里开始实现这一点。

如何更改行为以便不会移动到下一个空行,而是移动到下一行只有空格

谢谢!

2 个答案:

答案 0 :(得分:0)

无法真正帮助set_motion命令,但通过插件自己做这件事不应该是坏事。首先,这是ST3 API文档的link。您将创建一个sublime_plugin.TextCommand。特别感兴趣的是view#selview#lineview#substr

view#sel将获取光标的位置。

传递了一个点的

view#line(最初从view#sel检索到)将创建给你一个整行的区域。

view#substr获取区域(view#line的结果)并返回该行中字符的字符串。您可以使用正则表达式查看该行是否仅包含空格,并适当放置光标。如果该行不符合要求,您可以增加该区域中的第二个点以移动到下一行。

希望这有助于让您朝着正确的方向前进。

答案 1 :(得分:0)

以下是软件作者对“ by”:“ stops”的选项可用性的评论 https://forum.sublimetext.com/t/restoring-st2-cursor-move-by-word-behaviour-in-st3-on-os-x/14035

If you need more control, then using the move command with “by”: “stops” should allow more configurability. When using stops, you need to tell the command which logical units to stop on. The options are:

"word_begin": false,
"word_end": false,
"punct_begin": false,
"punct_end": false,
"sub_word_begin": false,
"sub_word_end": false,
"line_begin": false,
"line_end": false,
"empty_line": false,