在Sublime Text 2的片段中使用替换

时间:2015-08-18 15:45:00

标签: regex sublimetext2 code-snippets

我正在尝试了解Sublime Text 2中的以下代码段是如何工作的,我在LaTeX文件夹中找到了它:

<snippet>
    <content><![CDATA[\\begin{${1:env}}
    ${1/(enumerate|itemize|list)|(description)|.*/(?1:\item )(?2:\item)/}$0
\\end{${1:env}}]]></content>
    <tabTrigger>begin</tabTrigger>
    <scope>text.tex.latex</scope>
    <description>\begin{}…\end{}</description>
</snippet>

现在我对基本上${1:env}的内容很熟悉,但我不清楚${1/(enumerate|itemize|list)|(description)|.*/(?1:\item )(?2:\item)/}做了什么。我尝试查找它,我知道1如何选择$1{env}中的文本,接下来是正则表达式等等。但是会发生什么?如果我删除这部分功能会如何改变?

1 个答案:

答案 0 :(得分:0)

我现在至少看到了一些功能,在玩了一段时间之后。假设您使用此代码来构建枚举环境。在您输入enumerate并点击Tab后,${1/(enumerate|itemize|list)|(description)|.*/(?1:\item )(?2:\item)/}会自动将item放入环境中。我认为这是一个错误,它不会产生\item,但不是一个大问题。在任何情况下,其余功能都是,从此处,如果您输入Shift+Enter,它将自动生成换行符和另一个\item

我不清楚这个代码的确切部分究竟是什么部分负责此行为的每个部分 - 例如我不确定(?2\item)位是如何工作的,因为没有编号的占位符2 - 但这是基本功能。