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

