Sublime Text 的特殊片段
Special snippet for Sublime Text
在过去的几天里,我不得不使用 Whosebug,在其中我发现了一位很棒且乐于助人的开发人员。感谢大家!!
我正在做一个大项目,我需要一点帮助。我在 Sublime Text 3 上使用 moodle xml 文件。
这是我拥有的代码的一小部分:
<questiontext format="html">
<text>Here is my sample text</text>
</questiontext>
我需要将其转换为:
<questiontext format="html">
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>Here is my sample text?]]></text>
</questiontext>
问题是我有大约 400 行需要以这种方式更改。而且文字"Here is my sample text"处处不一样。我怎样才能做出这样的转变?创建一个片段?老实说,我看过如何创建代码片段,但不知道如何创建这样的代码片段...欢迎所有建议
片段用于输入 often-used 文本(即文本片段)以节省您输入新文本的时间。如果您已经有需要修改的文本,那么片段不是答案。
为此,您想使用查找和替换来做一些事情,特别是使用 Regular Expression 来查找和匹配您想要的文本。
对于上面的示例,该过程类似于以下内容:
通过从菜单中选择 Find > Replace...
或使用适用于您的操作系统的键打开替换面板(如果您不知道它,它会在菜单中可见)。
在底部出现的面板中,确保 "regular expressions" 和 "Highlight matches" 已打开,"Preserve Case" 已关闭。请参阅按钮上的工具提示。
接下来,在 Find What
中输入您要查找的文本,对于您的示例,该文本为:
<text>(.*)</text>
正则表达式部分是 (.*)
表示 "match any sequence of characters, including none at all, and capture (save) what you have selected".
当您输入文本时,如果您在缓冲区中观察,您会看到 Sublime 概述了正在匹配的文本,因为我们打开了 "highlight matches"。
在 Replace With
面板中,输入以下文本:
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>\?]]</text>
这里最神奇的部分是接近尾声的那个 \?
;那说 "insert the first thing we captured in the find field, followed by a question mark";其余文本是您在问题中指定的内容。
如果你的例子真的不需要在文本末尾有一个问号(在你的例子中你已经添加了它),你不需要 \?
部分。
现在您可以按 Replace
或 Replace All
,<text>something</text>
的所有实例都将被替换字符串替换,只是 something
部分是因为原始行的文本将被保留。
根据您的实际情况,您可能需要适当地调整它(比如您的示例文本布局不是很好或其他)。
我推荐类似 this tutorial 的内容(我也在上面链接)以更深入地了解正在发生的事情。特别是,这将解释为什么要添加问号,您需要使用 \?
而不仅仅是 ?
,我完全忽略了这一点,因为它是 [=61= 的一个很好的练习]. ;)
在过去的几天里,我不得不使用 Whosebug,在其中我发现了一位很棒且乐于助人的开发人员。感谢大家!!
我正在做一个大项目,我需要一点帮助。我在 Sublime Text 3 上使用 moodle xml 文件。
这是我拥有的代码的一小部分:
<questiontext format="html">
<text>Here is my sample text</text>
</questiontext>
我需要将其转换为:
<questiontext format="html">
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>Here is my sample text?]]></text>
</questiontext>
问题是我有大约 400 行需要以这种方式更改。而且文字"Here is my sample text"处处不一样。我怎样才能做出这样的转变?创建一个片段?老实说,我看过如何创建代码片段,但不知道如何创建这样的代码片段...欢迎所有建议
片段用于输入 often-used 文本(即文本片段)以节省您输入新文本的时间。如果您已经有需要修改的文本,那么片段不是答案。
为此,您想使用查找和替换来做一些事情,特别是使用 Regular Expression 来查找和匹配您想要的文本。
对于上面的示例,该过程类似于以下内容:
通过从菜单中选择 Find > Replace...
或使用适用于您的操作系统的键打开替换面板(如果您不知道它,它会在菜单中可见)。
在底部出现的面板中,确保 "regular expressions" 和 "Highlight matches" 已打开,"Preserve Case" 已关闭。请参阅按钮上的工具提示。
接下来,在 Find What
中输入您要查找的文本,对于您的示例,该文本为:
<text>(.*)</text>
正则表达式部分是 (.*)
表示 "match any sequence of characters, including none at all, and capture (save) what you have selected".
当您输入文本时,如果您在缓冲区中观察,您会看到 Sublime 概述了正在匹配的文本,因为我们打开了 "highlight matches"。
在 Replace With
面板中,输入以下文本:
<text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>\?]]</text>
这里最神奇的部分是接近尾声的那个 \?
;那说 "insert the first thing we captured in the find field, followed by a question mark";其余文本是您在问题中指定的内容。
如果你的例子真的不需要在文本末尾有一个问号(在你的例子中你已经添加了它),你不需要 \?
部分。
现在您可以按 Replace
或 Replace All
,<text>something</text>
的所有实例都将被替换字符串替换,只是 something
部分是因为原始行的文本将被保留。
根据您的实际情况,您可能需要适当地调整它(比如您的示例文本布局不是很好或其他)。
我推荐类似 this tutorial 的内容(我也在上面链接)以更深入地了解正在发生的事情。特别是,这将解释为什么要添加问号,您需要使用 \?
而不仅仅是 ?
,我完全忽略了这一点,因为它是 [=61= 的一个很好的练习]. ;)