今回は、Charu3のUnicode版でうっちーさん作の「コンソールアプリ起動プラグイン」を使う方法を解説します。S-JIS版は簡単に使えるのですが、Unicode版は文字コードの関係でちょっとだけ工夫がいります。
うっちーさん作成のドキュメントにも方法は書かれていますが、一部情報が抜けていてちょっとだけ試行錯誤したので今回は誰でも使えるように詳しく書いてみようと思います。Perlとコマンドラインの使い方が判ってれば、大体理解できると思います。多分。
1.前提と環境作成について まず、前提としてActivePerlがインストールされていること(サンプルがPerlだからなので、実際に使う時はPerlに限らずPHPなど別のスクリプト環境で構いません)。そして、コンソールアプリ起動プラグインが導入されていること。Perlの導入とプラグインの導入は、ぽっとの陽だまり研究所さんの説明が判りやすいです。
[リンク]Life Hack - ブログやHTMLの入力を楽にする方法(その3)
charu3及びプラグインのダウンロードはコチラ http://keijiweb.com/software.html
さて。
2.nkf(文字コード変換プログラム)の導入 ActivePerlのインストールと、Charu3ExecEx_Uni.dllをpluginフォルダにコピーする所までは出来ているでしょうか。では、次に「nkf.exe」を導入します。導入は簡単です。ファイルコピーだけ。
1.nkf.exe nkf32.dll Windows用からnkfをダウンロードしてください(下のDownloadボタン)。 2.ファイルを解凍してください。 3.\nkfwin\2080\win\nkf.exeをCharu3のインストールフォルダ(Charu3.exeと同じフォルダ)にコピーして下さい。
3.nkfとはなんだ? nkfとは文字コードを変換するプログラムです。コンソールアプリ起動プラグインはshell起動したプログラムに標準入出力でテキストを渡して、出力された物を受け取る事で様々な処理を行っています。
この時、Unicode版のCharu3にS-JISのテキストを渡したり、S-JISで動いてるプログラムにUniocdeのテキストを渡したりすると、文字コードの不一致で文字化けしてしまいます。それを防ぐために、起動するプログラムによっては文字コードを合わせてやらないとダメなんです。
と、難しい話はこの辺にして。例を挙げましょう。
4.ipconfigの結果をCharu3でペーストさせてみる ↓これはCharu3ExecEx_Uni.dllを起動するという意味のマクロです。これをCharu3のデータに登録します。
$PLUG-IN<.\plugin\Charu3ExecEx_Uni.dll,>$PLUG-IN 上の内容だけだと何も起こりませんので、拡張マクロの部分に以下の呪文を書き込みます。 ↓
ExecCmd=cmd /c ipconfig | nkf -w16L0 これは、「cmd /c」の上で「ipconfig」を起動して、その結果を「nkf -w16L0」でコード変換する、という意味です。nkfってのはさっき導入した文字コード変換プログラムです。ipconfigが出力する文字コードはunicodeじゃないので「-w16L0」でUnicodeの形式を指定して変換しているわけです。
さて、では実際に動かしてみましょう。上の例を自分で入力するのも面倒でしょうから、インポート用にデータを作りました。下のファイルをダウンロードして、Charu3でインポートして下さい。
ipconfig.c3d
インポートについては「Lesson5 インポートとエクスポート」をどうぞ。
nkfとCharu3ExecEx_Uni.dllの導入が上手くいっていれば、実行すると自分のPCのネットワーク設定がペーストされるはずで。環境によっては数秒かかる場合もあるので注意して下さい。
拡張マクロは"ExecCmd"だけじゃなくて"Prefix"や"Suffix"があります。これは、ExecCmdの前後に付けるコマンドラインのイメージです。例えば以下のように書くと、実際に実行するコマンドはダイアログで入力して、その前後に文字コードを変換するという動作になります。
Prefix=cmd /c nkf -s| Suffix=|nkf -w16L0 これがたまらん程便利です。ダイアログに"dir c:\"とか打ち込んで実行すると、エディタにdirコマンドの結果がペーストされます。その結果からストックモードでファイル名だけ抜き出していくとか、かなり使い甲斐のある機能です。よく考えられてます。
commandline.c3d コマンドライン機能のインポートデータ。コマンドラインは履歴が取られています。これもまた便利!
では、実際にスクリプトを呼び出して処理する方法を書いていきましょう。
5.Perlスクリプトでテキストを処理して結果を受け取る では、次にUnicode版のCharu3でPerlスクリプトを使ってみましょう。まずは例から。下の内容例は前述のパターンとほぼ同じですが、プラグインに渡すテキストとして$SELを指定しています。これは、選択したテキストです(エディタなどで色が反転している状態)。
$PLUG-IN<.\plugin\Charu3ExecEx_Uni.dll,$SEL>$PLUG-IN 拡張マクロは以下のようになっています。
ExecCmd=cmd /c nkf -e | perl .\plugin\scripts\head_cap.pl | nkf -w16L0 まず、nkfでPerlに渡されるテキストの文字コードをEUC(-e)にしています。それをPerlスクリプトに渡して処理し、最後にipconfigの時と同じUnicodeにしています。「|」の記号はパイプと言いますが、プログラムからプログラムにテキストを渡すという動作をします。このようにプログラムを繋げていくことで、色々な応用が出来るわけです。
「.\plugin\scripts\head_cap.pl」には、以下のようなスクリプトが書かれています。
#先頭文字を大文字にする @lines = <>; foreach my $line (@lines) { $line =~ s/(^.)/uc($1)/egi; print $line; } exit; 渡されたテキストの、行の先頭1文字を小文字から大文字にするという処理です。
これもファイルを用意しましたので、試してみて下さい。
scripts 例で使ったスクリプトファイル。解凍したらpluginフォルダにscriptsフォルダごとコピーして下さい。「charu3\plugin\scripts\head_cap.pl」というパスになればOKです。
top_uc.c3d Charu3でインポートして下さい。環境設定が上手くいっていれば、エディタで選択したテキストの頭1文字だけを大文字にする処理が動きます。
abcdefg hijklmn opqrstu ↓ Abcdefg Hijklmn Opqrstu
こんな処理です。
6.まとめ このhead_cap.plのファイル名や内容を適当に書き換えてスクリプトを用意していくと、面倒くさいコンパイルなどなしでCharu3の機能をどんどん追加していけるわけです。改めて書くと、うっちーさんのコンソールアプリ起動プラグインがいかに凄いか判りますな。感動的機能です。
というわけで、Unicode版のCharu3を使ってる多くのお友達も、簡単に使えるPerlとかその他スクリプトを使ってCharu3に色んな機能を追加しようぜ!定型的なテキスト処理は片っ端から自動化できるので、テキスト編集とかプログラム書きなんかは相当楽になると思うよ。
では、今回はこの辺で。さようならー。
|