ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

FilterPipes

tylerl ALL

将文本发送到shell命令或自定义过滤器 [ST2/ST3]

详情

安装次数

  • 总数 8K
  • Win 3K
  • Mac 4K
  • Linux 2K
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 2
Mac 1 1 0 0 0 0 0 2 0 1 0 0 2 0 0 1 0 0 1 0 0 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0

README

源码
raw.​githubusercontent.​com

FilterPipes

FilterPipes 是一个SublimeText(v2和v3)插件,用于通过管道或过滤器过滤选定的文本,这些管道或过滤器可以是Python函数,也可以是外部进程。

此项目位于 github.com/tylerl/FilterPipes

通过进程过滤

此插件提供了一个提示,让您提供要执行的shell命令。

Shell execute animation

通过Python过滤

Python代码也可以用作过滤器函数。已提供了一些有用的示例,但真正的强大之处在于您创建自己的函数。

创建自定义过滤器

FilterPipes让您能轻易地创建自己的自定义过滤器插件。提供了一些简单的预定义类,用于文本替换、正则表达式、逐字符翻译和外部进程。创建自己的自定义过滤器就像创建一个Python类,其中包含单个名为filter的方法,如下所示

Plugin creation animation

提供的命令

以下命令包含在内。所有命令都可通过命令面板访问。默认情况下未分配快捷键,但您可以随意添加自己的键。

  • 我的自定义过滤器插件:创建并访问您的自行派生的FilterPipes自定义插件。您第一次运行此命令时,它将为您创建插件并添加一些示例内容。每次后续运行此命令时,它将简单打开您的现有插件目录。
  • 发送文本到命令:提示您运行shell命令,然后使用您的选择作为stdin执行该命令,如果程序成功结束,则替换它们为stdout。
  • Base64编码Base64解码:使用Base64编码规则编码和解码文本。
  • URL编码URL解码:类似地,使用URL(“百分比”)编码规则编码和解码文本。
  • 字符串转义字符串反转义:使用简单的字符串转义规则对字符串进行编码和解码(例如,制表符字符变为 \t,换行符变为 \n,等等。
  • 去掉尾部空格:正如其名:去掉行尾的所有空格。虽然略微有用,但这主要是因为我想要包含一个基于正则表达式的过滤器示例。

示例过滤器

这些过滤器包含在“我的自定义过滤器插件”示例中。运行“我的自定义过滤器插件”命令来安装它们。

这些过滤器中的大多数都不使用任何自定义Python类,而是使用提供的通用过滤器的自定义选项来做些更有趣的事情。唯一的代码将是您的插件中Default.sublime-commands文件的条目。

翻译命令

这些提供简单的逐字符翻译应用。如果您熟悉Unix的tr命令,会认为这些类似。

  • 交换引号:交换单引号和双引号(反之亦然)。(非常有用,但无上下文感知)。
  • 转换为直引号:将所有类型的“智能引号”转换为正常的“直引号”,这是任何优秀的程序员都愿意做的。

正则表达式过滤器

您的正则表达式过滤器配置提供了一个简单的搜索正则表达式和替换字符串。它与基于正则表达式的搜索和替换类似,但您的设置会成为一个单一的简单命令。

  • 合并空格:将任何类型的空白字符序列转换为单个空格字符。

  • 十六进制转十进制、十进制转十六进制、八进制转十进制、十进制转八进制:在流行的数值基之间转换整数。这提供了一个使用回调函数进行替换而不是简单字符串常量的正则表达式过滤器的示例。它也是一个使用post_init回调来以编程方式重写运行时配置(在这种情况下是搜索正则表达式)的示例。

处理过滤器

为执行此单一操作已经编写了完整插件。实际上,这个插件最初就是这样开始的。但从那时起它已经变得非常有用。这种过滤器类型允许您指定要运行的命令。有点像“发送文本到命令”过滤器,但没有输入提示,默认情况下也没有shell解释(尽管您可以选择打开它)。

请注意,包含的示例需要您安装相关程序。您可能需要调整路径(以及可能还可以命令行选项),具体取决于您的本地安装。

  • 美化JS(js-beautify):许多JavaScript开发者使用名为“js-beautify”的命令来清理他们的代码。这个过滤器调用那个命令……假设它已安装在PATH中。否则,它什么也不做,只是作为一个如何编写这种过滤器的示例。
  • 压缩JS(uglifyjs):就像上面那样,但正好相反。这个命令使您的JavaScript紧凑且难以阅读……假设您已经安装了它——同样,上述警告同样适用。

Python过滤器

这些是真的酷。您编写自己的Python代码来转换选定的文本。请注意,命令的命名遵循SublimeText的正常模式。您将Python类名从驼峰式命名转换为下划线命名,并从末尾移除_command,以得到要放入您的.sublime-commands文件中的名称。这是SublimeText内部完成的,所以不要对我生气。

  • 颠倒单词:这是上述动画中编码的示例。它颠倒由空格分隔的单词的顺序。我不知道为什么有人会想这么做,但代码很小,效果明显,这使得它成为一段很好的示例代码。
  • 转换为驼峰式命名:将单词从下划线命名转换为驼峰式命名
  • 转换为小驼峰命名法:将单词从下划线命名法转换为小驼峰命中法,这与驼峰命名法完全相同,但首字母没有大写。实际上,这两个过滤器都使用相同的Python类。此过滤器演示了如何添加自己的自定义命令选项。
  • 转换为下划线命名法:从驼峰命名法转换回下划线命名法,主要是出于对一致性的强迫症。

创建自己的

要编写自己的插件,首先打开命令面板(通常是 ctrl+shift+Pcmd+shift+P),并运行“我的自定义过滤器插件”。即使最终你没有使用它创建的插件,这也至少会给你一个具有正确配置和示例的完整的工作框架,这样你就可以开始了。

所有命令都接受可选参数 use_selections,当设置为 false 时,会使系统忽略您的文本选择并将整个文件传递过去。通常这对于使用整个文件作为上下文的工具很有用,例如源代码格式化工具。

使用内置的过滤器类

通用过滤器类允许您在不写任何Python代码的情况下做一些酷炫的事情。对于这些,您不需要自定义插件,只需将适当的命令调用放入您自己的 .sublime-settings.sublime-keymap 文件中。

使用 filter_pipes_process

这会将文本发送到外部进程。通常配置看起来像这样。请注意,除非您已将 shell 设置为 true,否则您将希望您的命令是参数列表,而不是单个字符串。

{
    "caption": "YOLO Text",
    "command": "filter_pipes_process",
    "args": {
        "command": ["banner", "-w", "80"],
        "shell": false
    }
}

使用 filter_pipes_translate

使用Python的 string.translate 函数进行字符到字符的转换。之前提到的那个关于 tr 命令的备注?是的,现在是时候您的超级极客时期了。

{
    "caption": "H4X0R",
    "command": "filter_pipes_translate",
    "args": {
        "before": "AaEeiIoOlsSTt",
        "after":  "4433110015577"
    }
}

使用 filter_pipes_regex

提供正则表达式和替换项。这很简单,但不要忘了转义反斜杠以满足JSON编码要求。

{
    "caption": "Format Phone Numbers",
    "command": "filter_pipes_regex",
    "args": {
        "regex": "(\\d{3})(\\d{3})(\\d{4})",
        "replacement":  "(\\1) \\2-\\3"
    }
}

编写自己的自定义Python过滤器

这里是真正的魔法所在。您可以很容易地编写自定义代码以以任何可想象的方式转换文本,并且只需要几分钟就可以开始使用。

一旦您创建了自定义过滤器插件,请打开 myfilters.py 文件,并在文件的底部创建一个这样的类

class SuperAwesomeFilterCommand(filterpipes.FilterPipesCommandBase):
    """Does approximately nothing, but does it with style."""
    def filter(self, data):
        return data

类的名称决定了命令的名称,根据前面提到的SublimeText规则。因此,SuperAwesomeFilterCommand变成了super_awesome_filter

您的filter()函数返回的任何内容都将替换您的文本。所以,放手去玩吧。

请注意,如果您希望您的插件从.sublime-commands文件中获取一些可配置的参数,这很容易。首先,您创建一个类变量并将其分配给您想要的默认值

class SurroundSelectionCommand(filterpipes.FilterPipesCommandBase):
    """Prepends and appends some string to the selected text."""
    prepend = '{'
    append = '}'
    def filter(self, data):
        return self.prepend + data + self.append

然后在您的.sublime-keymap.sublime-commands文件中,像这样在“args”部分指定这些变量的替代值

{
    "caption": "Double Power Bracket",
    "command": "surround_selection",
    "args": {
        "prepend": ".:[[",
        "append": "]]:."
    }
}

版权和许可

这不是一个官方的Google产品。

Copyright 2015 Google Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.