PerlTidy
perltidy/Perl::Tidy 插件 - 一个 Perl 脚本缩进和重排工具。
详情
安装次数
- 总数 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 |
读我
Sublime Text 2/3 的 perltidy
PerlTidy 是 Sublime Text 2/3 的插件,它将命令行应用程序 perltidy 集成到 Sublime Text 中。它可以缩进和重排 Perl 源代码,使其更容易阅读。
快速入门
- 确保您已安装 Perl 解释器和 perltidy(提示:
apt-get install perltidy
,yum install perltidy
,cpan[m] Perl::Tidy
,ppm 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:
检查用户设置“perltidy_cmd”以查找一个(有效)用户提供的perltidy位置。
在环境变量PATH指定的目录中搜索“perltidy”(在Windows上是“perltidy.bat”)。
在平台特定的默认位置中搜索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作为替代方案。
说谢谢
我花费了很多宝贵的业余时间来开发这个插件,因此任何形式的帮助我都非常欢迎。如果您使用这个插件使得编程生活变得更加轻松和高效,并想表示感激,请考虑
- 通过PayPal进行捐助
- 在GitHub上关注这个插件
- 在twitter、博客或任何地方宣传。
请注意,为了我能够继续开发这个插件,您无需执行上述任何一项。只要我对这个插件感兴趣并有空闲时间,我将继续开发。类似地,即使是以这种方式捐款,也不太可能让我更努力地工作,除非我收到如此多的捐款以至于我可以考虑全职工作(至少现在似乎不太可能)。
谢谢!
更改
这里只列出了最新的更改。有关所有更改的详细日志,请参阅完整变更日志。
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问题。