gpt4 book ai didi

javascript - 如何在 Sublime Text 3 中按空格后自动在括号之间插入空格

转载 作者:行者123 更新时间:2023-12-02 22:27:09 26 4
gpt4 key购买 nike

当我输入 ( 并点击 Space 时,我希望 Sublime Text 自动添加空格并移动插入符号,以便最终结果为 ( ^ ),其中 ^ 是光标。

如何调整按键绑定(bind)以实现此目的?

我已经能够使用调整键绑定(bind)

{ "keys": ["("], "command": "insert_snippet", "args": {"contents": "( $0 )"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
]
}

但是在输入 ( 时,它总是将其格式化为 ( ^ )。我宁愿在点击 space 后将其格式化。

我可以在默认绑定(bind)中看到在输入 { 后点击 enter 时的情况,这将运行一个宏,所以我认为我可以将它用作模板,但我在我的文件系统上找不到该宏来了解它是如何工作的。

{ "keys": ["enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line in Braces.sublime-macro"}, "context":
[
{ "key": "setting.auto_indent", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\{$", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^\\}", "match_all": true }
]
},

最佳答案

您的初始绑定(bind)想法是正确的,但您想要的是将其绑定(bind)到按空格而不是按左括号;这需要您首先手动打开配对的括号,然后按空格键插入所需的代码片段:

    { "keys": [" "], "command": "insert_snippet", "args": {"contents": " $0 "},
"context": [
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\($", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^\\)", "match_all": true }
]
},

现在按空格键将在光标之间插入两个空格,但前提是光标直接位于两个括号之间。

但请注意,此绑定(bind)将停止默认存在的 Backspace 上的绑定(bind),以便在退格时删除两个括号,因为该绑定(bind)要求光标被括号包围,就像这个一样,但是一旦此绑定(bind)触发,情况将不再如此。

因此,您也可以包含此绑定(bind),它会检测光标何时处于该情况并运行与默认绑定(bind)相同的宏;这将允许您按 Space 插入空格,然后决定不需要它们并按 Backspace 删除它们。

    { "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Left Right.sublime-macro"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "\\( $", "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^ \\)", "match_all": true }
]
},

I can see in the default bindings a case when hitting enter after typing { which will run a macro so I thought I could use it as a template, but I can't find that macro on my filesystem to see how it works.

Sublime 附带的包存储在 sublime-package 文件(扩展名已更改的 zip 文件)中。从 sublime 核心查看它们内部的最简单方法是使用命令面板中的View Package File,它会显示当前加载的每个包中的每个文件。然后,您可以输入筛选文本以缩小要查看的文件的范围,然后选择它来打开该文件。

请注意,以这种方式打开的文件是只读的(因为它们源自包文件),以提醒您编辑它们没有任何效果。

关于javascript - 如何在 Sublime Text 3 中按空格后自动在括号之间插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59024996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com