I run Find & Replace commands a lot. Sometimes I’m changing a class name. Sometimes I’m looking for a function reference and want to make sure all instances have been accounted for. Sometimes I’m working on an article and and some conversion process requires some global changes. I’ve often wished I could run a single command to run all the Find & Replace commands I normally have to do individually. I finally web searched my way through a solution so figured I’d write it down.
Install the RegReplace Package
There is no way to do this directly within Sublime Text, so we’ll need a little help. RegReplace works very nicely for this.
Package control is typically the easiest way to do this kind of thing:

Edit the User Settings

The settings for this package is where you define all the find & replace commands you want to be able to call. You add new objects to the replacements section in the JSON. It’s fairly self explanitory. Here’s two I added that I’ll want to be running together:
{
"replacements": {
"remove_opening_ps": {
"find": "<p>",
"replace": "",
"greedy": true,
"case": false
},
"remove_closing_ps": {
"find": "</p>",
"replace": "",
"greedy": true,
"case": false
}
}
}
Edit the User Commands

The find & replace chunks we set up don’t do anything by themselves, we need to attach them to a command. This chunk of config is an array of commands we can add to. We could call our two new find/replace bits in a single command we create, like this:
[
{
"caption": "Reg Replace: Remove All P's",
"command": "reg_replace",
"args": {
"replacements": [
"remove_opening_ps",
"remove_closing_ps"
]
}
},
]
You can name the command (the caption) whatever you want. It then becomes available as a command to run.
Run the new command!
Easy cheesy.

That’s a brilliant tip and the example video.. Never considered doing this for some reason — makes so much sense though.
So often content is provided with pseudo HTML often created by MS Word.. nice to have a way to remove the same spammy tags it always generates.
Good tip on the multiple search and replace, but in a case like this, it’s kinda overkill… instead of replacing
<p>
and</p>
you could also just replace</?p>
.You could even expand that to get all
p
tags, even with attributes, using</?p[^>]*>
.Simples :-)
Cool! Regex to the rescue.
My main use-case has about 15 find-replaces for all kinds of various stuff, so it might be a little outside the scope of a single regex.
Yeah, I could totally see a command like
remove cruft
doing a bunch of these little replaces. RegEx could absolutely do it, but it would get a bit unwieldy.</?(p|blockquote|span)[^>]*>
What sublime theme are you using Chris? Its so clean and simple!
I’m curious about that too!
Looks like he’s using the same one I am: Material Theme
https://github.com/equinusocio/material-theme
Thanks Joe!
Question, in your code, I understand the need for ‘find’, ‘replace’ and ‘case’. What does greedy do? Is that a designation to do all?
What is the theme used in the first image (package install) and last image (run new command)?
There is a small error in your JSON code example.
A closing bracket at the end of the code is missing.
There is a cool plugin for Sublime Text https://github.com/titoBouzout/Tag that can strip tags or attributes from file. Saved me a lot of time on multiple occasions. Can’t recommend it enough. Especially if you don’t want to mess with regular expressions.