icon

このCotEditorが素晴らしい。

404 Blog Not Found:Mac OS X 用のGUI Text Editor - ちくさんのコメント他
それ言うんだったらCotEditorとSmultron,SubEthaEditorあたりも外せないでしょう.あと,Macといえば最近はTextMateでは??
AYNiMac : 自作ソフト : CotEditor 0.9.2
プレーンテキストファイルを読み書きするエディタです。
行番号表示、シンタックスカラーリング、OgreKit を使用した正規表現検索、ウィンドウの透明度設定などの機能があります。
動作環境は MacOS X 10.3.9 以上。
GPL(フリーソフトウェア)です。

以下、使用感を。使い始めてわずか一日ですが、もう手になじんでしまいました。

はじめにやっておきたい初期設定

Formatのところで

  • File Encodingのところで、"Edit Encoding list..."を押して、順序をUTF-8,EUC-JP, SHIFT_JISの順に

    これをやっておかないと、普通のACSIIしかないソースコードなどがSHIFT_JIS解釈されてちょっと悲しいので。実際のコード判定の順番は、Invalidな判定が出やすいものを上に持って行くのが吉。

  • FontはOsaka-Monoに

    まあこれは誰でもやっていると思います。

検索最強!

なんといってもCotEditorで最高なのがこの検索。これは以下の検索ウィンドウを見れば明らかでしょう。

coteditor-find

見ての通り、もうこれでもか、というぐらい細かいオプションが選択できますし、でも普段はもっと縮小して表示しておけます。検索履歴も覚えてくれるので、複雑な正規表現も安心して使えます。この点に関してはCotEditorに限らず、GUI Editorの面目躍如ですね。Emacsのmini bufferで同じことをやるのはさすがに厳しいので。

さらに嬉しいのは、検索のハイライト機能。Firefoxなどに付いているHightlight Allと同じことをしてくれます。

ただ一点、ハイライトしたものを消すときの操作が何もないのはちょっと考えもの。空文字列を検索すれば結果としてハイライトを消せるのですが、これはちょっと不親切でしょう。

その点を除けば、CotEditorの検索/置換機能はほぼ完璧ですね。

追記:メニューに[Unhilight]を見つけましたが、これってhilightボタンと同じところにないと気がつきません。

超便利なScriptメニュー

TextWranglerにあってmiになくて一番惜しいのが、スクリプトメニューのサポート。Emacsを使っている人には、shell-command-on-regionに当たることをGUIでやるための仕組みといえばおわかりでしょう。

使い方も超簡単。実行したいスクリプトを~/Library/Application\ Support/CotEditor/ScriptMenu/に転がしておくだけ。ここにあるファイル名を変える事で、ショートカットキーを割り当てることも出来ます。

スクリプトは、普通にSTDINから入力を受けてSTDOUTに書くようにすればOK。例えば選択範囲をperltidyするスクリプトは、わずかこれだけです。

#!/bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%
/usr/local/bin/perltidy -q -st

このあたりのことは、

が参考になりました。

お礼代わりに、実体参照エンコーディングの改善版を以下に。

#!/usr/local/bin/perl
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%
use strict;
use warnings;
use utf8;

my %entities = (
    "\\"   => '#92',
    "\xA5" => '#A5',
    '"'    => 'quot',
    '<'    => 'lt',
    '>'    => 'gt',
    '&'    => 'amp',
);

my $re_entities =
  '[' . join( '', map { quotemeta } grep !/&/, keys %entities ) . ']';

while (<>) {
    s{
        ($re_entities)  # entities except for '&'
        |               # or
        ([&]            # '&'
            (?!             # not followed by
                (?: 
                    \#[0-9]{1,7}            # #DDDDDDD
                    |                       # or
                    \#[xX][0-9a-fA-F]{1,6}  # #xHHHHHH
                    |                       # or
                    [a-zA-Z]{1,8}           # named entities like amp,lt,gt
                )
            ;)      # ; -- the entity terminator
        )
    }{
        '&' . $entities{ $1 || $2 } . ';';
    }msegxo;
    print;
}
__END__

ちなみにこの部分も、このスクリプトで実体参照化しました。

それいてオープンソース

これだけの機能があってフリー。単にフリーなのではなくオープンソース(GPL)。ただ、READMEを見てもWebページを見ても、ソースコードをどこで配布しているかがわかりませんでした。.dmgへのリンクは SourceForge になっているのですが....

次のバージョンアップに期待するもの

というわけでなかなか行けてるCotEditorですが、まだまだ荒削りなところもあります。

  • 拡張子とSyntax Mapping

    これをGUI側で設定できないのは不親切でしょう。例えば.pmをperlにマップしたい時には、

    --- /Users/dankogai/Library/Application Support/CotEditor/SyntaxColorings/Perl.plist.dist       2006-10-14 09:56:21.000000000 +0900
    +++ /Users/dankogai/Library/Application Support/CotEditor/SyntaxColorings/Perl.plist    2007-04-27 15:20:08.000000000 +0900
    @@ -803,6 +803,10 @@
                    </dict>
                    <dict>
                            <key>keyString</key>
    +                       <string>pm</string>
    +               </dict>
    +               <dict>
    +                       <key>keyString</key>
                            <string>cgi</string>
                    </dict>
            </array>
    
  • としなければなりませんでした。

  • 他のAppとの連携

    目下一番の不満はここ。miではcmd-Rで編集中のファイルをブラウザーで見るということが簡単に出来ましたが、CotEditorではブラウザーにdrag & dropしなければなりません。これもスクリプトメニューを使えば出来ないという事はないのですが、これまたちょっと不親切です。

まとめ

Text Editorというのは、もっともユーザーが保守的に振る舞う分野かもしれません。一端それに慣れるとなかなか乗り換え難い。vi(m) vs. emacsというのも、結局のところ一端指になじんだeditorに「味をしめて」いるわけです。

それでも、Officeがやっていることまでブラウザーが進出している現在、Geeksでなくとも編集する機会が最も多いのはテキストというのは事実。そういう人たちまでvi(m)やemacsを押し付けるのはゴーマンですし、ましてやCotEditorのような検索置換というのは、CLIではかなり無理があります。

BBEditの標語は"It doesn't suck."というものでしたが、最近のGUI Text Editorはviやemacsでないと駄目というCLI Text Editorのよい面を抑えつつも、GUIならではのよさを追求するものも増えてきました。ましてやCotEditorはオープンソース。試すだけなら何ら失うものはありません。

それにしても、こんないいものを今まで知らずにいたとは、私もまたエディタ保守であったことの証拠かも知れませんね。紹介て下さったみなさん、ありがとうございました。作者のnakamuxuさん、GJ!

Dan the Text Editor Maniac