Sublimetext3 如何使用SublimiteText2或SublimiteText3在新行的字符串内部自动添加增加的数字?

Sublimetext3 如何使用SublimiteText2或SublimiteText3在新行的字符串内部自动添加增加的数字?,sublimetext3,sublimetext2,sublimetext,sublime-text-plugin,Sublimetext3,Sublimetext2,Sublimetext,Sublime Text Plugin,我正在编写一个mIRC脚本,它要求在每一行上都有一个前置字符串,后面是一个从上一行中增加的行号(如果有) 例如: [ips] [urls] n0=1:mIRC NewsURL:http://www.mirc.com/news.html n1=2:mIRC RegisterURL:http://www.mirc.com/register.html n2=3:mIRC HelpURL:http://www.mirc.com/help.html 因此,如果我在第一行:[ips](它不是以模式n*=

我正在编写一个mIRC脚本,它要求在每一行上都有一个前置字符串,后面是一个从上一行中增加的行号(如果有)

例如:

[ips]

[urls]
n0=1:mIRC NewsURL:http://www.mirc.com/news.html
n1=2:mIRC RegisterURL:http://www.mirc.com/register.html
n2=3:mIRC HelpURL:http://www.mirc.com/help.html
因此,如果我在第一行:
[ips]
(它不是以模式
n*=
开头)并按下
ENTER
,我希望下一行前面加上
n0=

但是,如果我在最后一行
n2=3:mIRC HelpURL:http://www.mirc.com/help.html
(以一个模式开始)然后我按下回车键,我想在下一行前面加上
n3=


有什么方法可以让它发生吗?

一个插件可以做这种事情。基本上,我们想要的是,当行的开头包含
n*=
时,如果
*
是一个数字,则重写enter的正常行为。为此,我们需要一个自定义的
EventListener
,它实现了一个
on\u query\u context
方法&一个在满足上下文时运行的自定义命令

重新导入
进口升华
导入升华插件
类MRCScripteEventListener(升华插件.EventListener):
“”“一个自定义事件侦听器,它实现了一个on_query_上下文方法,该方法检查
行的开头,如果形式为n*=其中*=数字。
"""
查询上下文上的定义(self、view、key、operator、operator、match_all):
当前\u pt=view.sel()[0]。开始()
所需=view.substr(view.line(view.sel()[0].begin()))
如果是钥匙!=“mrc_脚本”:
一无所获
如果操作员!=sublime.OP_REGEX_匹配:
一无所获
如果运算符==sublime.OP_REGEX_匹配:
返回重新搜索(操作数,所需)
一无所获
类MrcScriptCommand(升华插件.TextCommand):
“”“当MrcScript事件侦听器设置上下文时执行的自定义命令。”
实现了。
"""
def运行(自我,编辑):
当前_line=self.view.substr(self.view.line(self.view.sel()[0].begin()))
匹配模式=r“^(n\d+=)
如果重新搜索(匹配模式,当前行):
num=int(重新匹配(匹配模式,当前行)。组()[0][1:-1])+1
self.view.run_命令(“插入”{
“字符”:“\nn{}=”.format(num)
})
其他:
返回
密钥绑定如下所示:

{
    "keys": ["enter"],
    "command": "mrc_script",
    "context": [
        {
            "key": "mrc_script",
            "operator": "regex_match",
            "operand": "^(n\\d+=)"
        }
    ],
}
我不会详细介绍这个插件的工作原理。完成这项工作所需的全部工作是遵循本手册中给出的说明

下面是一个正在运行的gif:

警告是:-

  • 它不尊重您请求的
    [ips]
    部分,因为我认为这会使插件变得不必要的复杂
  • 它只查看当前行,看到的是
    n
    &
    =
    &之间的数字,它会相应地为下一行递增。因此,是否已经有这样一条线是不明智的

  • 希望这能满足您的要求。

    确实如此!非常感谢您的回答!