That Sort of Thing

在Mac OS X上使用Carbonized应用程序的一个复杂问题是,如果应用程序支持插件,那么插件也需要进行碳化处理BBEdit就是这样一个应用程序。

然而,BBEdit插件的鼎盛时期早在90年代中期看看吧第三方插件在Bare Bones的网站上列出,你会发现它们中很多都是很长的我不认为最近的相对缺乏插件是因为有少BBEdit开发商的利益——我认为这仅仅是Perl过滤器和applescript已经变得如此更容易编写Most of the older BBEdit plug-ins had no user interface and simply manipulated text in certain ways; those types of tasks are许多在Perl中写比在C中更容易

一个例外是Craig Maynard出色的流行LineSort插件。以前可用lite(免费)和完整的(共享)版本,LineSort BBEdit用户是最简单和最常见的方式来执行复杂的排序和重复删除行但它不是碳化,BBEdit用户非常想念它(尤其是那些不写Perl的BBEdit用户)。

Bare Bones使用BBEdit 7自行解决问题,它带有两个新的插件:排序行和处理重复行(BBEdit之前的Sort插件非常简单,只提供ASCII排序和反向排序选项。)

然而,情节变厚了,因为LineSort现在是免费软件(以及在GPL下发布的开源软件),版本5最终在Mac OS X下运行它还可以在Mac OS 9上运行。

Bare Bones插件和LineSort几乎提供相同的功能排序行时,两者都可选择允许自然排序顺序(例如,“12”在“7”之后排序)两者都允许您按grep模式排序两者都允许您指定排序的行是否应替换当前窗口中的文本,或转到新窗口。

但是,它们的用户界面却截然不同Bare Bones’s plug-ins use several modal dialog boxes; LineSort uses a single floating palette.

模态对话框从许多用户那里得到了糟糕的说法,所以你可能会发现Bare Bones会选择将它们用于新的插件但实际上模态对话有几个优点一个是它们可以由键盘驱动打开BBEdit 7的Sort Lines对话框,然后按住Command键,片刻之后,您将看到对话框中每个复选框的快捷方式这些快捷方式与普通菜单命令快捷方式不冲突,因为大多数菜单命令在打开模式对话框时被禁用只能使用鼠标驱动诸如LineSort之类的浮动调色板。

我绝对不会将LineSort的界面描述为漂亮,但它似乎更直接,主要是因为它没有提供与Bare Bones的插件对话框一样多的复选框It’s also somewhat convenient to be able to sort lines and remove duplicates in one action; with BBEdit 7’s plug-ins, you need to bring up the Sort Lines and Process Duplicates dialogs separately.

(再一次,当我需要行和删除重复,我使用以下Perl过滤器:

#!/usr/bin/perl -wl
use strict;

my %seen;
while (<>) {
    chomp;
    $seen{$_}++;
}

foreach (sort keys %seen) {
    print;
}

但那不是重点。)

脚本

BBEdit的新插件和LineSort都是AppleScriptable(可记录)既不允许您指定目标 - 它们只能在前窗上工作If there is a selection, only the selected lines are sorted; otherwise, the entire text of the window.

编写LineSort脚本时,您只需发出分类command along with any optional parameters这里有一个例子LineSort脚本:

tell application "BBEdit"
    sort with natural order and keep one duplicate
end tell

BBEdit’s plug-in scripting syntax is more verbose, but I prefer it (if for no other reason than that it’s more similar to scripting the BBEdit application itself)这是一个示例,稍微修改了BBEdit 7附带的示例脚本之一:

tell application "BBEdit"
    -- first, sort the items
    set outputOptions to {replace selection:true}
    set sortOptions to {sort digits numerically:true}
    sort lines sort options sortOptions output options outputOptions
    
    -- then, process them for duplicates
    set matchOptions to {matching mode:leaving one}
    set outputOptions to {kill matched lines:true}
    process duplicate lines match options matchOptions ¬
        output options outputOptions
end tell

排序

LineSort在Mac OS X上还活着并且非常棒很好,现在BBEdit附带强大的排序和重复的处理工具没有理由不宣布这种情况对每个人来说都是胜利。

由于LineSort现在免费,BBEdit的新工具并没有为Maynard带来收入If anything, the reverse is true — given that LineSort is now free and works on both sides of the Mac OS divide, it lessens the impact of BBEdit 7’s new sorting tools, since LineSort works with older versions of BBEdit, as well as BBEdit Lite.

以前: 坏蛋
下一个: 最后一分钟MWSF预测