gpt4 book ai didi

autocomplete - 如何在用户定义的 Sublime Text 3 片段中避免自动关闭 (, {, [?

转载 作者:行者123 更新时间:2023-12-01 06:31:02 28 4
gpt4 key购买 nike

我正在尝试为 ST3 编写一个看起来相当无辜的片段。用于插入
\left<open-parens> \right<close-parens>
在数学范围内进入 latex 文档。

我现在拥有的是这样的:

<snippet>
<content><![CDATA[\\left${1:(} $0 \\right${1/(\()|(\{)|(\[)/(?1:\))(?2:\})(?3:\])/}]]></content>
<tabTrigger>lft</tabTrigger>
<scope>text.tex.latex string.other.math.tex,meta.function.environment.math.latex</scope>
</snippet>

用途如下:
  • 输入 lst , tab ;
  • \left( \right)插入 (被选中;
  • 如果用户想要( , tab降落在中间;
  • 其他类型 {[\right 之后插入相应的右括号

  • 我已经验证了正则表达式是否按预期工作(通过试用 ${1:(} 替换为 ${1:{}${1:[} 的片段版本。

    然而在使用中,当输入任何开始括号时,ST 调用它自己的片段,a)在之后立即插入关闭括号,并且 b)从我的片段中删除焦点,因此永远不会调用正则表达式。

    第一个问题,我已经能够通过捕获开头的parenses并调用一个小片段,插入字符本身来缓解。例如:
    { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "$0{"}, "context": [
    {"key": "selector", "operator": "equal", "operand": "text.tex.latex string.other.math.tex, meta.function.environment.math.latex"},
    {"key": "preceding_text", "operator": "regex_contains", "operand": "\\\\left\\($", "match_all": true }] },

    但后来我发现了 b)。

    解决方案将涉及以下任何一项:
  • 根据上下文和 "key": "preceding_text" 阻止执行内置的自动关闭片段.
  • 使我自己的迷你片段返回到前者(即在键入 [ 后焦点返回到 lst 片段)。

  • 如何做到这一点?

    最佳答案

    这并不是我真正要寻找的答案,而是针对这个特定问题的有效解决方案。

    使用在外观上有所不同,但所需的击键是相同的。

    我要做的是:
    将 lft 片段更改为:

    <content><![CDATA[\\left${1:$0\right}]]></content>

    为每个括号类型定义一个新的键绑定(bind),它会覆盖默认值并做一些有用的事情,例如对于 [] 将其添加到键盘映射文件:
    { "keys": ["["], "command": "insert_snippet", "args": {"contents": "[ $0 $SELECTION]"}, "context":
    [
    { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
    { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
    { "key": "selector", "operator": "equal", "operand": "text.tex.latex string.other.math.tex, meta.function.environment.math.latex"},
    { "key": "preceding_text", "operator": "regex_contains", "operand": "\\\\left\\\\right$", "match_all": true }
    ]
    },

    作为一个积极的副作用,lft-snippet 变得更容易阅读(删除正则表达式)。

    我仍然非常想知道以更一般的方式完成此任务的方法。

    关于autocomplete - 如何在用户定义的 Sublime Text 3 片段中避免自动关闭 (, {, [?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639636/

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