萌ディタが最強エディタ過ぎて他に移動が出来ない
ところでお話ですが、みなさんはお仕事でパソコンを使っているとき、何のエディタをインストールしていますか?
人によっては、EmEditerだったり秀丸であったり、サクラエディタであったり、変人はxyzzyやVim、NTEmacs等のUnixの伝統を受け継いでいるエディタを利用している方もいらっしゃるでしょう。
ばばんばーんは何を使っているかというと、当サイトでもコンテンツを持っている萌ディタを未だに使っています。
このエディタ、設定ファイルがJavaScriptで記述されている&拡張子ごとに設定ファイルがあるので、設定を自分で書き足してやることで
ショートカットから色分けからその他まで、大抵の事が拡張できてしまうのが最大の利点です。
アルファ版のまま開発が停滞して、そのまま作者が音信不通になってしまって、大変に不安定という最大の欠点がありますが
使い込んで、設定を拡張していけば、それを補って余りある程に利便性が高いため、結局手放せなくて今に至ります。
特に萌ディタの場合はJavaScriptを選んだというのが大きな利点になっていて
- 萌ディタは設定をJavaScriptで変更可能。
- JavaScriptはプロトタイプオブジェクト指向なので自分自身を拡張できる
この2点が螺旋の輪の様に重なり合って、2倍と言わず、2乗の拡張性を持っています。
特にここ半年、ハマって使っているのが、画面上にある1行入力バッファ。
ここにJavaScriptのコードを入れてあげる事で、エディタ側をJavaScriptで直接操作する事が出来ます。
最初はいまいち使い道の思いつかない機能だなぁと思っていたのですが、実際には大違い。
ショートカットに追加するほど頻繁には使わないけど、手作業では面倒くさい様な事をやらせるには絶好の道具だと言う事が自分でも分かってきました。
範囲選択した20行だけに行番号を振りたい!
メールアドレスの一覧から@以下のホスト名だけを取りだしてABC順に並べたい
こういうちょっとしたテキスト仕事に非常に、というよりはおそらくWindows環境ではもっとも楽に作業可能なのが萌ディタの利点といえます。
こういうときには、まず範囲選択をしてから
App.Caret.Selection.Text
を入力してやれば、範囲選択した場所を取得できるので、そこの部分にプログラムを与えてやるだけです。
App.Caret.Selection.Text.replace( );
実際には、App.Caret.Selection.Text
とは毎回打ち込みたくは無いので、ここでエディタを拡張するやることで解決を図りました。
実際にはどうしようか若干悩んだのですが、JavaScriptにおいては貴重な$変数に、選択範囲のテキストを自動代入することにしました。
これで、良く使う「App.Caret.Selection.Text」を1文字に圧縮できました。
しかし、短くできるのはコレだけではない。
JavaScriptはプロトタイプオブジェクト指向の言語なのでオブジェクトの拡張が可能です
このメソッドが欲しいな、とかいちいち長い名前打ち込むのは面倒くさいなと思ったら、拡張してしまえばいい!
例えば便利なのは、各行ごとに処理を行うeachメソッド
選択範囲に行番号をつけたい場合は
$.each(function(s,i){ return i+'\t'+s; }).send()
選択範囲のHTMLタグを削除したいときは
$.deltag().send();
こうすれば短い行数で、やりたい処理が大抵出来てしまいます。
というわけで、ちょこちょこと暇なときに継ぎ足していっていた萌ディタの拡張スクリプトをちょっと公開
実際は、prototoype.jsとRuby(というよりprototype.js自体がRubyの影響下にある)から便利なメソッドを継ぎ足してみました
実際便利に使っている道具なので、興味があればドウゾ
投稿者 baban 2010/06/23 at 06:20