You can write a simple plugin + keybinding to do that.
filter_content_by_scopes.py
import sublime
import sublime_plugin
class FilterContentByScopesCommand(sublime_plugin.TextCommand):
def run(self, edit, skip_scopes=None):
class_name = __class__.__name__
v = self.view
if not isinstance(skip_scopes, list):
sublime.error_message(
'[{}] "skip_scopes" must be a list.'.format(class_name)
)
return
skip_scope = "(" + "), (".join(skip_scopes) + ")"
# region, scope = token
tokens = v.extract_tokens_with_scopes(sublime.Region(0, len(v)))
kept_tokens = filter(lambda t: not sublime.score_selector(t[1], skip_scope), tokens)
kept_text = "".join(map(lambda t: v.substr(t[0]), kept_tokens))
new_view = v.window().new_file()
new_view.assign_syntax(v.settings().get("syntax"))
new_view.run_command("insert", {"characters": kept_text})
# set viewport/cursor to top
new_view.sel().clear()
new_view.sel().add(0)
new_view.set_viewport_position((0, 0))
keybinding
{
"keys": ["whatever_keybinding"],
"command": "filter_content_by_scopes",
// only run on Markdown files
"context": [{ "key": "selector", "operator": "equal", "operand": "text.html.markdown" }],
"args": {
"skip_scopes": [
"markup.quote.markdown",
// may add more...
],
},
},