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

Perl​Tidy

作者: vifo 全部

perltidy/Perl::Tidy 插件 - 一个 Perl 脚本缩进和重排工具。

标签 格式化Perl整理

详情

  • 0.4.5
  • github.​com
  • github.​com
  • 11 年前
  • 2 小时前
  • 12 年前

安装次数

  • 总数 13K
  • Win 5K
  • Mac 4K
  • Linux 4K
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 日 6 月 22 日
Windows 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 2 0 0 0 0 0 0 0 0 0 0 1 1
Mac 1 1 0 0 0 0 0 1 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

读我

源代码
raw.​githubusercontent.​com

Sublime Text 2/3 的 perltidy

PerlTidy 是 Sublime Text 2/3 的插件,它将命令行应用程序 perltidy 集成到 Sublime Text 中。它可以缩进和重排 Perl 源代码,使其更容易阅读。

快速入门

  • 确保您已安装 Perl 解释器和 perltidy(提示:apt-get install perltidyyum install perltidycpan[m] Perl::Tidyppm install Perl-Tidy
  • 通过 Sublime Text 的 Package Control、git 或 ZIP(在 Sublime Text 中插件名为 PerlTidy不是 SublimePerlTidy)安装此插件
  • 打开一个 Perl 源文件并按 Control+Shift+t

继续阅读有关详细安装、使用、配置和自定义的说明。

目录

安装

  • 使用 Sublime Package Control:安装 PerlTidy 最简单的方法是通过 Sublime Package Control。如果你还没有使用,那就试试吧。真的。

安装 Package Control 后,重新启动 Sublime Text 并打开命令面板(在 Linux/Windows 上按 Control+Shift+P,在 OS X 上按 Command+Shift+P 或从菜单中选择 工具->命令面板...)。选择 Package Control: 安装包,等待获取最新包列表,然后从可用包列表中选择 PerlTidy

  • 使用 Git:将存储库克隆到 Sublime Text 的 目录中。请注意,目标目录必须为 PerlTidy

    git clone https://github.com/vifo/SublimePerlTidy PerlTidy
    

使用 Package Control 或 git 的好处是,插件将自动保持与最新版本同步。

  • 从ZIP文件中获取:下载最新版本,以ZIP存档形式下载,网址为此处,并将存档中的目录“SublimePerlTidy-master”复制到您的Sublime Text 目录中。将目录“SublimePerlTidy-master”重命名为“PerlTidy”。

以下是目录的位置。如果您使用Sublime Text 3,请确保将目录名中的“2”替换为“3”。或者,您也可以通过从Sublime Text菜单中选择首选项->浏览包...来进入目录。

操作系统 包的位置
macOS ~/Library/Application Support/Sublime Text 2/Packages/
Linux ~/.config/sublime-text-2/Packages/
Windows %APPDATA%\Sublime Text 2\Packages\

使用

安装PerlTidy后,打开您选择的Perl文件,

  • 然后按Control+Shift+t
  • 或者打开命令面板,开始输入“perltidy”,选择“PerlTidy: Tidy”并按回车键

来重新格式化整个文件。PerlTidy也可以在选定内容上工作。试试看。

配置

尽管PerlTidy的使用非常简单,PerlTidy会尽力做到最好,但大部分功能都可以根据您的需求进行配置。

perltidy位置

PerlTidy将通过以下方式尝试定位perltidy:

  1. 检查用户设置“perltidy_cmd”以查找一个(有效)用户提供的perltidy位置。

  2. 在环境变量PATH指定的目录中搜索“perltidy”(在Windows上是“perltidy.bat”)。

  3. 在平台特定的默认位置中搜索perltidy。这些位置包括:

  • 在Windows上(按顺序)

默认的Strawberry Perl安装位置C:\Strawberry,例如。

"perltidy_cmd": [ "C:\\Strawberry\\perl\\bin\\perl.exe", "C:\\Strawberry\\perl\\site\\bin\\perltidy" ]

默认的ActivePerl 64位安装位置C:\Perl64,例如。

"perltidy_cmd": [ "C:\\Perl64\\bin\\perl.exe", "C:\\Perl64\\site\\bin\\perltidy" ]

默认的ActivePerl 32位安装位置C:\Perl,例如。

"perltidy_cmd": [ "C:\\Perl\\bin\\perl.exe", "C:\\Perl\\site\\bin\\perltidy" ]

默认的Cygwin安装位置C:\cygwin,例如。

"perltidy_cmd": [ "C:\\cygwin\\bin\\perl.exe", "/usr/local/bin/perltidy" ]

  • 在Linux和OS X上

/usr/bin/perltidy/usr/local/bin/perltidy(这通常也会位于您的PATH中),例如。

"perltidy_cmd": [ "/usr/bin/perltidy" ]

让PerlTidy首先尝试定位perltidy。如果这不起作用,根据需要调整用户设置“perltidy_cmd”。

perltidy选项

默认情况下,PerlTidy使用Damian Conway的Perl最佳实践(PBP)中建议的perltidy选项。尽管我对PBP集中的一些perltidy设置并不完全同意,但使用它们可以使Perl代码的可读性稍好。由于perltidy已经支持使用命令行开关-pbp--perl-best-practices使用PBP集,因此引入另一组选项似乎是不必要的。

所以,默认的PerlTidy选项是

"perltidy_options": [ "-pbp" ]

这至少在较新的perltidy版本中是相当于

"perltidy_options": [
    "-l=78", "-i=4", "-ci=4", "-vt=2", "-cti=0", "-pt=1", "-bt=1", "-sbt=1", "-bbt=1", "-nsfs", "-nolq",
    "-wbb=\"% + - * / x != == >= <= =~ !~ < > | & = **= += *= &= <<= &&= -= /= |= >>= ||= //= .= %= ^= x=\"",
    "-st", "-se"
]

嗯,这是什么意思?!别担心,这里有一些解释(以及与perltidy默认值的不同)

PBP选项 perltidy默认值 描述
-l=78 -l=80 最大行宽为78/80列
-i=4 相同 使用每缩进级别4列
-ci=4 -ci=2 延续缩进为4/2列
-vt=2 -vt=0 垂直紧密度设置为最大/最小
-cti=0 相同 不额外缩进关闭标记
-pt=1 相同 中等圆括号紧密度
-bt=1 相同 中等花括号紧密度
-sbt=1 相同 中等方括号紧密度
-bbt=1 -bbt=0 中等/最小块花括号紧密度
-nsfs -sfs for循环中分号额外空格禁用/启用
-nolq -olq 过长引号字符串的缩进禁用/启用
-wbb="..." 在这些标记(运算符)之前断开
-st 输出到STDOUT
-se 错误到STDERR

您可以通过在您的偏好设置中更改用户设置 "perltidy_options" 来覆盖以上任意设置,最好包括类似这样的 -pbp 选项

"perltidy_options": [ "-pbp", "-l=120" ]

请参考官方的 perltidy 说明书perltidy 风格指南 以理解所有可用选项的解释。

快捷键绑定

默认情况为所有平台上的 Control+Shift+t。您可以在 偏好设置->快捷键绑定 - 用户 中自由更改,通过添加和调整以下行

// PerlTidy key bindings
{
    "keys": ["ctrl+shift+t"],
    "command": "perl_tidy",
    "context": [ { "key": "selector", "operator": "equal", "operand": "source.perl", "match_all": true } ]
}

其他设置

如果您想覆盖特定设置,请打开 偏好设置->设置 - 用户 并添加/调整以下行

// Specify full path to perltidy and optionally the Perl interpreter. If not
// specified, will search PATH for perltidy and fall back to platform default
// locations.
//
// Please note, that with Strawberry Perl/ActivePerl on Windows, you have to
// either specify the full path to the Perl interpreter AND the perltidy file
// (NOT "perltidy.bat"), OR the full path to the batch wrapper file
// "perltidy.bat". The former is preferred, we don't need the batch wrapper.
//
// Windows/Strawberry Perl/ActivePerl:
//"perltidy_cmd": [ "C:\\Strawberry\\perl\\bin\\perl.exe", "C:\\Strawberry\\perl\\site\\bin\\perltidy" ]
//"perltidy_cmd": [ "C:\\Perl\\bin\\perl.exe", "C:\\Perl\\site\\bin\\perltidy" ]
//
// Windows/Cygwin:
//"perltidy_cmd": [ "C:\\cygwin\\bin\\perl.exe", "/usr/local/bin/perltidy" ]
//
// Linux/OS X with non-standard location or explicit Perl interpreter:
//"perltidy_cmd": "/opt/perl/bin/perltidy"
//"perltidy_cmd": [ "/opt/perl-5.18.0/bin/perl", "/opt/perl-5.16.3/site/bin/perltidy" ]

// Specify possible perltidyrc files to search for within current project. The
// first matching perltidyrc will be used. Absolute paths may also be used, if
// you have a global perltidyrc. Defaults to [ ".perltidyrc", "perltidyrc" ].
//"perltidy_rc_paths": [ ".perltidyrc", "perltidyrc" ]
//"perltidy_rc_paths": [ "C:\\Users\\USERNAME\\AppData\\Roaming\\perltidyrc" ]

// Specify perltidy options. Defaults to: [ "-pbp" ]
//"perltidy_options": [ "-pbp" ]

// Specify, whether perltidy options given in "perltidy_options" take
// precedence over options found in perltidyrc files. Defaults to "false"
// (note: default value was "true" up to version 0.4.0). Adjust to "true" to
// reverse this order.
//"perltidy_options_take_precedence": false

// Log level for perltidy operations. Set to 1 to enable informational
// messages and to 2 for full debugging. Defaults to 0, so only warnings and
// errors will be displayed on the console.
//"perltidy_log_level": 0

// If, for some reason, you'd like to disable PerlTidy entirely, set
// "perltidy_enabled" to false. Defaults to true.
//"perltidy_enabled": true

按项目设置

您可以通过在每个项目的文件中添加一个包含覆盖设置的“设置”部分来覆盖这些设置

{
    "folders": [
        {
            "path": "..."
        }
    ],
    "settings": {
        "perltidy_log_level": 2,
        "perltidy_options": [ "-pbp", "-l=120", "-w" ]
    }
}

故障排除

在常规操作期间,PerlTidy会将警告和错误输出到Sublime Text的控制台(通过 Control+` 打开或从菜单中选择 视图->显示控制台)。为了启用额外的诊断信息,按以下方式调整用户设置“perltidy_log_level”

  • 0 == 仅警告和信息。这是默认设置。

  • 1 == 打印用于整理内容的系统命令和(如有)perltidyrc文件路径。

  • 2 == 完整调试。除了上述信息外,还会打印PerlTidy搜索perltidy和/或perltidyrc的位置。

常见错误

Windows 错误 193

您正在Windows上运行Strawberry Perl/ActivePerl,并通过用户设置“perltidy_cmd”设置了一个自定义的perltidy路径。当尝试运行时,PerlTidy在ST控制台上弹出一个错误信息

PerlTidy: Unable to run perltidy: "C:\Strawberry\perl\site\bin\perltidy" ...
PerlTidy: OS error was: WindowsError(193, '...')
PerlTidy: Maybe you have specified the path to "perltidy" instead of "perltidy.bat" in your "perltidy_cmd"?

您指定了未经扩展的原始Perl "perltidy" 文件(无扩展名)的路径,而不是批处理包装文件 “perltidy.bat”。Windows无法直接执行该文件。是的,在 cmd.exe 中输入“perltidy”会工作,但只是因为 cmd.exe 处理没有扩展名的文件的方式:它会尝试使用环境变量 PATHEXT 中的指定扩展名,直到找到“perltidy.bat”并运行它。

TL;DR:假设您正在运行纯净的Strawberry Perl/ActivePerl安装:调整用户设置“perltidy_cmd”为以下之一:

"perltidy_cmd": [ "C:\\Strawberry\\perl\\bin\\perl.exe", "C:\\Strawberry\\perl\\site\\bin\\perltidy" ]    # for Strawberry Perl
"perltidy_cmd": [ "C:\\Perl64\\bin\\perl.exe", "C:\\Perl64\\site\\bin\\perltidy" ]                        # for ActivePerl 64-bit
"perltidy_cmd": [ "C:\\Perl\\bin\\perl.exe", "C:\\Perl\\site\\bin\\perltidy" ]                            # for ActivePerl 32-bit

或者,如果您确实需要出于某些(非显而易见)的原因使用批处理包装程序,请将其更改为以下之一:

"perltidy_cmd": "C:\\Strawberry\\perl\\site\\bin\\perltidy.bat"       # for Strawberry Perl
"perltidy_cmd": "C:\\Perl64\\site\\bin\\perltidy.bat                  # for ActivePerl 64-bit
"perltidy_cmd": "C:\\Perl\\site\\bin\\perltidy.bat"                   # for ActivePerl 32-bit

或者,通过完全不禁用“perltidy_cmd”来让PerlTidy找出perltidy的位置。

错误报告

为了使错误查找更简单,请确保您始终运行最新版本的PerlTidy。除此之外,请确保您已将PerlTidy日志级别设置为最大(在用户设置中为"perltidy_log_level": 2),以便获得可能的所有调试信息。在提交问题时,请包括以下信息

  • 操作系统名称(例如“Windows XP SP3”,而不是“Windows”)

  • 操作系统架构(例如32位,64位)

  • Sublime Text的编译版本号(通过打开 帮助->关于

  • Sublime Text控制台输出

要快速收集此信息,请打开ST控制台,输入以下Python代码(单独一行)并将输出包括在您的问题中

from __future__ import print_function, unicode_literals;import platform, sublime, datetime;print('-' * 78);print('Date/time: {0}'.format(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S +0000')));print('Sublime Text version: {0}'.format(sublime.version()));print('Platform: {0}'.format(sublime.platform()));print('CPU architecture: {0}'.format(sublime.arch()));print('OS info: {0}'.format(repr(platform.platform())));print('-' * 78)

其他

Windows的独立perltidy可执行文件

如果您正在Windows上运行Sublime Text并且不喜欢仅为了使用perltidy就安装完整的Perl解释器,请从这里下载独立的perltidy可执行文件并调整您的设置

"perltidy_cmd": [ "C:\\WHEREVER_YOU_HAVE_DOWNLOADED_THE_EXE_TO\\perltidy-20121207-x86.exe" ]

此可执行文件是用ActiveState ActivePerl 5.16.3.1603 x86 使用PAR::Packer 生成的。它包含Perl解释器以及perltidy的最新版本,包括所有必需的依赖项在内的自包含可执行文件(因此大小为4.5MB)。

请注意:此可执行文件对我有效,并且提供了无任何支持的 现成。如果它对您也有效,那太好了!如果不起作用,请不要抱怨,而是获取Windows的Perl解释器和perltidy。更好的是:修复错误,重新打包(可能以“helpers/build_perltidy_20121207_x86.pl”脚本作为起点)并提供最终的可执行文件给我,以便在S3上托管。

待办事项

  • 在保存时自动整理Perl文件。在此之前,可以使用ST2-CommandOnSave作为替代方案。

说谢谢

我花费了很多宝贵的业余时间来开发这个插件,因此任何形式的帮助我都非常欢迎。如果您使用这个插件使得编程生活变得更加轻松和高效,并想表示感激,请考虑

请注意,为了我能够继续开发这个插件,您无需执行上述任何一项。只要我对这个插件感兴趣并有空闲时间,我将继续开发。类似地,即使是以这种方式捐款,也不太可能让我更努力地工作,除非我收到如此多的捐款以至于我可以考虑全职工作(至少现在似乎不太可能)。

谢谢!

更改

这里只列出了最新的更改。有关所有更改的详细日志,请参阅完整变更日志

v0.4.5 2014-01-05 22:15:00 +0100

  • 移除packages.json文件。包控制现在通过git标签进行版本管理。
  • 从所有标签中删除了前导“v”。

v0.4.4 2014-01-03 09:30:00 +0100

  • 增加版本号以修复#22问题。