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

执行解析器

edankwan 全部

一个插件,允许用户为粘贴命令和复制行命令添加自定义Python解析器命令。

详细信息

  • 2014.12.05.11.46.03
  • github.com
  • github.com
  • 10年前
  • 2小时前
  • 11年前

安装

  • 总数 385
  • Win 255
  • Mac 77
  • Linux 53
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 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mac 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Readme

源码
raw.​githubusercontent.​com

Sublime Text插件 - 执行解析器

执行解析器 是一个Sublime插件,它允许用户使用内置命令或在粘贴和复制行之前添加自定义命令(Python)来解析内容。它利用了Sublime的多选功能,并按照Sublime的原生粘贴和复制行功能运行。

内部X到Y插件

内部驼峰式插件

安装

  • 包控制(推荐):如果您尚未安装,请安装 包控制。然后使用 安装包 命令搜索 执行解析器

  • 手动:将(repo)克隆到您的包文件夹中(在Sublime中:首选项 > 浏览包…),然后重命名文件夹为 执行解析器

用法

插件命令

  • 执行解析器:解析并粘贴 (Ctrl+Shift+v) - 解析剪切板中的字符串并将其粘贴到所选区域。

  • 执行解析器:解析并复制 (Ctrl+Shift+c) - 解析所选区域的字符串并直接在它后面复制。

  • 执行解析器:设置解析器 (Ctrl+Shift+x) - 调用选择框选择要应用的命令。选择命令后,您可以将其应用到所需的解析器命令上。您可以应用到

    • 全部 - 将所选命令应用到 “解析并粘贴命令”“解析并复制命令”
    • 仅粘贴 - 将所选命令应用到 “解析并粘贴命令”
    • 仅复制 - 将所选命令应用到 “解析并复制命令”
  • 执行解析器:用户自定义命令选项 (Ctrl+Shift+z) - 调用用户自定义命令的选项面板

    • 重新初始化命令 - 在您添加/编辑任何用户命令或编辑 commands.json 文件后,您需要运行此命令来重新初始化插件。否则,设置解析器 面板中的命令列表不会更新。
    • 编辑 commands.json - 它是一个 json 文件,用于存储所有用户命令,它位于 [Packages]/User/Exec 解析器。
    • 添加新命令 - 添加一个新的用户命令。您将被提示输入文件名。请注意,您不需要在文件名后添加任何扩展名。在您输入文件名并且文件不存在时,它将打开 commands.json 和命令文件。您可以在其中添加您的代码。但别忘了在更新后运行 重新初始化命令。-)
    • 编辑命令 - 它将显示所有用户命令的列表,您可以从中选择您要编辑的命令。但别忘了在更新后运行 重新初始化命令。-)
    • 删除命令 - 它将显示所有用户命令的列表,您可以从中选择您要删除的命令。

内置命令

默认情况下,安装后即可使用几个内置命令。

none
//Do nothing

dash-case
//Convert to dash case

snake_case
//Convert to snake case

camelCase
//Convert to camel case

X to Y
//Convert X to Y, Width to Height and so on

Swap equal positions
//Change var a = b; into var b = a;

使用命令

首先,您需要选择用作解析器命令(粘贴/复制)的命令。假设您想将粘贴命令更改为将剪贴板中的文字粘贴为 骆驼式,您可以按照以下步骤操作:

  1. (Ctrl+Shift+x) 打开 执行解析器:设置解析器 面板。
  2. 选择 骆驼式
  3. 选择 仅粘贴

然后每次您点击 (Ctrl+Shift+v) 触发 执行解析器:解析并粘贴 解析器命令,输出结果将以骆驼式显示。对于 执行解析器:解析并复制 同样如此。

您选择的命令将保存在您再次更改它或重启 Sublime Text 之前。有一个方法可以在重启 Sublime Text 后保存您选择的命令。您可以通过简单地将其添加到 用户设置 json 文件中来实现。

"update_default_command_on_change" : true

默认情况下,执行解析器:解析并粘贴和执行解析器:解析并复制的命令都是“无”。这意味着它没有任何作用。我这样做的原因是,您可以更改此插件的快捷键以替代 sublime 中的原生 粘贴复制行 功能。因此,您可以随意用原生粘贴和复制行快捷键替换此插件的快捷键。

创建您的命令

假设您想创建一个命令在数字前添加美元符号。按 (Ctrl+Shift+z) 打开 执行解析器:用户命令选项 面板,选择 “添加新命令”。像“dollarize”一样输入命令文件名(无需扩展名),然后按 enter。然后它将打开两个文件:

  • commands.json - 存储所有用户命令描述的 json 文件。如果您想,您可以在此文件中更改名称和描述。
  • [filename].py(在此例中,dollarize.py) - 您放置脚本的地方。

dollarize.py 中输入以下 python 脚本:

output = re.sub(r'(?<![\$\d])(\d+)', r'$\1', output)

保存它,然后再次按 (Ctrl+Shift+z) 打开 执行解析器:用户命令选项 面板。选择 重新初始化命令 让插件更新脚本。现在您可以开始测试它了。

您正在编辑的脚本文件是通过 python 中的 exec() 命令执行的。这意味着您可以利用它并使用 if/else 语句、循环和函数。这里还有一个示例

def upperAndLower(char, isUpper):
    if isUpper:
        return char.upper()
    else:
        return char.lower()
arr = list(output)
for i in range(0, len(arr)):
    arr[i] = upperAndLower(arr[i], i & 1)
output = ''.join(arr)

<< My name is Edan.
>> mY NaMe iS EdAn.

很简单!

公开变量

我们公开以下变量,以方便您构建命令

  • 输出(字符串) - 解析命令应用到的单行文本。如果用户选择多行,我们在传递到输出变量之前将行分割开。所以,在任何情况下,您都只处理一行。我知道这可能会破坏多行解析的需求。我这样做是为了尝试模仿原生函数的行为。我们可能会在以后的版本中公开更多内容,但现在的工作原理就是这样。
  • parserType(字符串) - 显示用户使用的解析命令。可以是“粘贴”或“复制”。
  • 选择文本(字符串) - 当前选择的文本。如果用户使用多选,每个选择都使用自己的实例。该变量可以是多行的。
  • 剪贴板文本(字符串) - 剪贴板内容。该变量可以是多行的。
  • 行索引 - 您正在编辑的行索引。
  • 行数 - 区域中的行数。

公开的Python模块

  • shutil
  • math
  • datetime
  • json
  • os
  • re

SETTING

/* The default parser commands */
"paste_command_id" : "none",
"duplicate_command_id" : "none",

/* To save the command you set as default */
"update_default_command_on_change" : false,

TODO

  • 添加更多默认执行命令
  • 减少在命令测试期间用户调用重新初始化命令的次数

目标

本插件的目标是完全替代原生的粘贴命令和行复制命令。我设计的方式是,如果未使用任何解析命令,它表现与原生命令相同。

贡献

这是我第一次尝试Python,我通常不是一个好的程序员。所以,如果您注意到其中有什么问题,请提出拉取请求。 如果您有想要分享的酷命令,请发起拉取请求。随着您的贡献,这个插件将变得更加强大:)

关于我

我的名字是Edan Kwan(@edankwan),我是一个前端网页开发者。我对Python一无所知,我通常编程能力很弱。我总是觉得将短划线形式的HTML属性复制到camelCase JavaScript作为变量名称很烦人,所以我想要构建一个Sublime插件来做这件事。然而,我不想只做一个小插件,所以我决定让它变得更大!我非常确信你们可以写得比我更好。所以,请提出拉取请求来帮助它成长! :)