【问题标题】:Special snippet for Sublime TextSublime Text 的特殊片段
【发布时间】:2017-02-01 06:37:19
【问题描述】:

在过去的几天里,我不得不使用 stackoverflow,在其中我发现了一位出色且乐于助人的开发人员。谢谢大家!!

我正在做一个大项目,我需要一点帮助。我在 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 行需要以这种方式进行更改。并且文本“这是我的示例文本”在任何地方都不同。我怎样才能做出这样的转变?创建一个sn-p?老实说,我已经看过如何创建sn-p,但无法弄清楚如何创建这样的......欢迎所有建议

【问题讨论】:

    标签: html sublimetext2 sublimetext3 sublimetext sublime-text-plugin


    【解决方案1】:

    sn-p 用于输入常用文本(即文本的 sn-p),以节省您输入新文本的时间。如果您已经有需要修改的文本,则 sn-p 不是答案。

    为此,您想通过查找和替换来做一些事情,特别是使用Regular Expression 来查找和匹配您想要的文本。

    对于您上面的示例,该过程将类似于以下内容:

    通过从菜单中选择 Find &gt; Replace... 或使用适用于您的操作系统的相应键来打开替换面板(如果您不知道,它在菜单中可见)。

    在底部出现的面板中,确保“正则表达式”和“突出显示匹配”已打开,“​​保留大小写”已关闭。请参阅按钮上的工具提示。

    接下来,在Find What 中,输入您要查找的文本,例如:

    <text>(.*)</text>
    

    其中的正则表达式部分是(.*),它表示“匹配任何字符序列,包括不匹配,并捕获(保存)您选择的内容”。

    当您输入文本时,如果您在缓冲区中查看,您将看到 Sublime 概述了正在匹配的文本,因为我们打开了“突出显示匹配”。

    Replace With 面板中,输入以下文本:

    <text><![CDATA[<audio preload="auto"><source src="https://www.mywebsite.com/sample.mp3"></audio>\1\?]]</text>
    

    这里的神奇之处在于接近结尾处的那一点,上面写着\1\?;上面写着“插入我们在查找字段中捕获的第一件事,然后是问号”;其余文本是您在问题中指定的内容。

    如果您的示例确实不需要在文本末尾添加问号(在您的示例中已添加),则不需要 \? 部分。

    现在您可以按ReplaceReplace All,并且&lt;text&gt;something&lt;/text&gt; 的所有实例都将被替换字符串替换,除了something 部分是什么无关紧要,因为文本来自原行将被保留。

    根据您的实际情况,您可能需要进行适当的调整(例如,如果您的示例文本的布局不是很好等)。

    我推荐this tutorial(我也在上面链接到)这样的东西,以便更深入地了解正在发生的事情。特别是,这将解释为什么要添加问号,您需要使用\? 而不仅仅是?,我完全忽略了它,因为这对读者来说是一个很好的练习。 ;)

    【讨论】:

    • 这应该没问题,但看问题是它必须包含完整的代码,我的意思是包含&lt;questiontext format="html"&gt;,就像在示例中一样:&lt;questiontext format="html"&gt; &lt;text&gt;Here is my sample text&lt;/text&gt; &lt;/questiontext&gt;,因为在代码中还有一些其他的包括&lt;text&gt;&lt;/text&gt; 的区域,但我只需要更改父级为&lt;questiontext format="html"&gt;&lt;/questiontext&gt; 的区域。 PS,在我的例子中,最后不需要添加问号,那是我的错误,但我明白了。
    • Sorr,我发现为此我可以使用CTRL+ENTER。一切正常!你为我节省了几个小时的工作时间,让我避免了很多代码错误。谢谢!
    • 要将这个&lt;questiontext format="html"&gt; &lt;text&gt;Here is my sample text&lt;/text&gt; &lt;/questiontext&gt;转换成这个代码&lt;questiontext format="html"&gt; &lt;text&gt;&lt;![CDATA[&lt;audio preload="auto"&gt;&lt;source src="https://www.mywebsite.com/sample.mp3"&gt;&lt;/audio&gt;Here is my sample text]]&gt;&lt;/text&gt; &lt;/questiontext&gt;我必须在Sublime Text中找到函数,在搜索字段中输入这个代码&lt;questiontext format="html"&gt; &lt;text&gt;(.*)&lt;/text&gt; &lt;/questiontext&gt;并且替换字段中的代码必须是@987654345 @`
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多