我经常运行查找和替换命令。有时我正在更改类名。有时我正在查找函数引用,并希望确保已考虑所有实例。有时我正在处理文章,一些转换过程需要进行一些全局更改。我经常希望能够运行单个命令来运行所有通常需要单独执行的查找和替换命令。我终于通过网络搜索找到了解决方案,所以我想把它写下来。
安装 RegReplace 包
无法直接在 Sublime Text 中执行此操作,因此我们需要一些帮助。 RegReplace 非常适合这种情况。
包控制通常是执行此类操作的最简单方法。

编辑用户设置

此包的设置是您定义所有想要调用的查找和替换命令的地方。您将新的对象添加到 JSON 中的替换部分。它相当容易理解。这里是我添加的两个我想一起运行的示例
{
"replacements": {
"remove_opening_ps": {
"find": "<p>",
"replace": "",
"greedy": true,
"case": false
},
"remove_closing_ps": {
"find": "</p>",
"replace": "",
"greedy": true,
"case": false
}
}
}
编辑用户命令

我们设置的查找和替换块本身不会做任何事情,我们需要将它们附加到一个命令。这部分配置是一个命令数组,我们可以添加。我们可以将两个新的查找/替换部分调用到我们创建的单个命令中,如下所示
[
{
"caption": "Reg Replace: Remove All P's",
"command": "reg_replace",
"args": {
"replacements": [
"remove_opening_ps",
"remove_closing_ps"
]
}
},
]
您可以将命令(标题)命名为任何您想要的内容。然后,它将作为一个可运行的命令。
运行新命令!
很简单。

这是一个绝妙的技巧,还有示例视频。不知何故,我从未考虑过这样做——虽然它很有意义。
经常会提供带有伪 HTML 的内容,这些内容通常由 MS Word 创建。很高兴能有一种方法来删除它始终生成的相同垃圾标签。
关于多个搜索和替换的好提示,但在这种情况下,有点过头了……与其替换
<p>
和</p>
,您也可以只替换</?p>
。您甚至可以扩展它来获取所有
p
标签,即使带有属性,使用</?p[^>]*>
。很简单 :-)
太酷了!正则表达式来拯救。
我的主要用例大约有 15 个用于各种内容的查找替换,所以它可能超出了单个正则表达式的范围。
是的,我完全可以想象像
remove cruft
这样的命令执行一堆这些小替换。正则表达式绝对可以做到,但它会变得有点难以驾驭。</?(p|blockquote|span)[^>]*>
Chris,你使用的是什么 Sublime 主题?它非常干净简洁!
我也很好奇!
看起来他用的是跟我一样的主题:Material Theme
https://github.com/equinusocio/material-theme
谢谢 Joe!
问题是,在您的代码中,我理解对 'find'、'replace' 和 'case' 的需求。'greedy' 是做什么的?它是否表示要执行所有操作?
第一张图片(包安装)和最后一张图片(运行新命令)中使用的主题是什么?
您的 JSON 代码示例中有一个小错误。
代码末尾缺少一个右括号。
Sublime Text 有一个很酷的插件 https://github.com/titoBouzout/Tag,它可以从文件中剥离标签或属性。它在很多情况下为我节省了大量时间。强烈推荐。特别是如果你不想使用正则表达式。