2007年04月29日 08:30 [Edit]

Mac - CotEditorがはげしくイカしている件

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


この記事へのトラックバックURL

この記事へのトラックバック
マックを買ってきたらインストールするソフト(マック入門のすすめ):江島健太郎 / Kenn’s Clairvoyance - CNET Japan セットアップは一瞬で終了。最近のマックは快適すぎる。ずっとマック信者だったぼくなんかは、あまりに快適すぎて最近マックにスイッチした人はずるい....
MacBookProをセットアップしたので晒してみる【ぺってぃブログ】at 2009年09月08日 22:49
というわけで、私も日々お世話になっている CotEditor が Version 1.0 になったので、ここでもお報せします。 CotEditor 1.0 リリース!長きにわたった CotEditor のベータがようやく終了、正式版の公開です。前バージョンからの機能追加はなく、バグフィックスで「...
紹介 - CotEditor が 1.0 に!【404 Blog Not Found】at 2009年02月28日 21:08
404 Blog Not FoundのDanさんのエントリーで、CotEditorというのを知りました。ファーストインプレッションはかなり好印象です。デフォルトで行間が程よく空いていて、好みに合わせて再調整する必要がなくて、設定変更したのは文字コードだけでした。 私がテキストエディ...
はじめてCotEditorを使ってみた【yamaq blog】at 2007年04月29日 10:54
この記事へのコメント
http://www.w3.org/TR/REC-xml/#NT-Char
にあるようにXMLでは�は使えません。
1桁で使えるのは #x9 | #xA | #xD だけです。

この制限(Charの定義)があるので、改ページがあるGPL丸ごとはXMLに埋め込めなかったり。
Posted by znz at 2007年04月30日 23:53
...続き

すばらしいAppをありがとうございました。
今後ともよろしくお願いいたします。
二重投稿はよきにはからっておきました。

Dan the CotEditor Newbie
Posted by at 2007年04月30日 00:59
nakamuxu様、
弾です。作者様にご覧にいただけるとは、光栄です。
> アンハイライトボタンは独自に実装することになりますが、今後の課題ということで検討させていただきます。
さらに欲を言えば、FirefoxやSmultronみたくQuick Findを付けていただけると....
> 拡張子とシンタックスの関連は、GUI で設定できます。
最後の段階のメニューで見落しました><
この手のものは、プルダウンではなくタブにするのがよろしいかと。
> 標準添付のスクリプトの中にも編集中のファイルを Safari で開くもの(cmd+opt+O)もありますので
拝見しました。しかしAppleScript経由だと、なんとなくもっさり感がありますねえ。あと、ファイル名でショートカット指定するのがちょっと分かりにくいのと、この場合コンフリクトが起きた場合どうなるのかというのがちょっと心配でした。
続く...
Posted by at 2007年04月30日 00:59
* 拡張子とシンタックスの関連は、GUI で設定できます。
環境設定(Preferences)>シンタックス(Syntax)>一番下の方の「スタイルを選択(Choose style)」メニューから Perlを選択し、その下の「編集(Edit)」ボタンをクリックしてください。シートが開き、「キーワード(Keywords)」と書かれたプルダウンメニューを開くと、一番下に「拡張子(Extensions)」があり、ここで追加できます。分かりづらかったかも知れないですね…。
* 他のAppとの連携は、やはりスクリプトメニューを想定しています。標準添付のスクリプトの中にも編集中のファイルを Safari で開くもの(cmd+opt+O)もありますので、ぜひご利用ください。
今後ともよろしくお願いいたします。
# ダブってしまった投稿を削除していただけますでしょうか…。
Posted by nakamuxu at 2007年04月29日 23:46
CotEditor 作者の nakamuxu です。ご利用ありがとうございます。
* 検索関連は、OgreKit をほぼそのまま利用させてもらってます。アンハイライトボタンは独自に実装することになりますが、今後の課題ということで検討させていただきます。
* 金さんもコメントしていただいてますが、ソースも sourceForge にあります。わたしのサイトからですと下記の URI になります。
http://aynimac.com/p_blog/files/article.php?id=42
(バージョンごとで sourceForge の URI も変わりますので、わたしのサイトからたどっていただくのが確実かも)
===つづく===
Posted by nakamuxu at 2007年04月29日 23:44
MoonWolfさん、
>10進表記での文字参照は最大7桁では?
そうでした。0x10FFFE = 1114110 なので。
>1桁の16進表記を使えないようにしているのはなぜですか?
特に理由はありませんが、そもそも�とか使うのでしょうかねえ。
>yenはXML本体では定義されていないので&x#a5;にしたほうがいいかも。
というわけで、MoonWolfさんの意見を反映させました。
Dan the Editor-in-chief Hereof
Posted by at 2007年04月29日 18:29
10進表記での文字参照は最大7桁では?
1桁の16進表記を使えないようにしているのはなぜですか?
yenはXML本体では定義されていないので&x#a5;にしたほうがいいかも。
Posted by MoonWolf at 2007年04月29日 17:20
《一端それに慣れるとなかなか乗り換え難い》⇒《一旦それに慣れるとなかなか乗り換え難い》

と毎度すみません。次の行の《一端》も同様です。
Posted by yabu at 2007年04月29日 14:54
作者のページにソースはここって書いてありますが、修正が入ったんかな。
http://prdownloads.sourceforge.jp/coteditor/22163/CotEditor_0.9.2_346_src.dmg
Posted by 金さん at 2007年04月29日 12:30
オブション間違えました。

perltidy -q -st $1
Posted by み at 2007年04月29日 10:55
miでもできますよ>Scriptメニュー
#!/bin/sh
#replace_all
perltidy -q $1
Posted by み at 2007年04月29日 10:40