ユニコード文字のマクロ検索No.20698
おしょう さん 06/01/09 23:19
 
(マクロ会議室の方が適切なのかもしれませんが、それほど専門的な内容でもないと
思い、こちらに投稿します。)

以下の作業をしたいと思っています。

・ユニコード文字を含む、検索したい文字400字程度のデータファイルがある。
・特定の文書に対して、上記データファイル内の文字があるかどうかを検索する。

このくらいなら私でもマクロでできるだろうと思ったのですが、ユニコード文字の検
索で失敗しているのか、もっと基本的に検索コマンドの使い方が理解できていないの
か、うまく(というか、事実上まったく)動作しません。

どなたか、お知恵をお貸しいただけないでしょうか。

[ ]
RE:20698 ユニコード文字のマクロ検索No.20701
ENCODINGSHIFTJIS さん 06/01/10 09:33
 
文字色を変えて、その色を検索、という方法もありえます。
秀丸エディタの強調表示定義ファイルライブラリ
常用漢字強調表示定義ファイル
http://hide.maruo.co.jp/lib/hilight/joyo.html

[ ]
RE:20701 ユニコード文字のマクロ検索No.20702
おしょう さん 06/01/10 09:50
 
ENCODINGSHIFTJIS 様、

そんな方法があるとは気づきませんでした! 私にとってはまさにそれが簡便でベス
トです。さっそく実現できました。ありがとうございます。

[ ]
RE:20702 ユニコード文字のマクロ検索No.20704
vickwei さん 06/01/10 10:38
 
ENCODINGSHIFTJIS さま、おしょう さま、

 常用漢字強調表示定義ファイルを作った「hagi」です。(「hagi」は昔の名
前で、今は「vickwei」になっています。) 拙作を紹介してくださり、ありが
とうございました。

 ただ、常用漢字は1981年に「一般の社会生活で用いる場合の、効率的で共通
性の高い漢字を収め、分かりやすく通じやすい文章を書き表すための漢字使用
の目安」として内閣告示で定められたもので、その強調表示定義ファイルを御
覧になってわかるように、1945字だけでして、パソコン上でのシフトJISやUni
code漢字とは直接は関係ありません。
 ですので、常用漢字強調表示定義ファイルで強調されている漢字以外がイコ
ールUnicode漢字だと考えるのは大きな誤りです。

 おしょう さまの目的が「Unicode漢字を検索する」ということでしたら、[^
!-K \n]を正規表現で検索されたら良いのではないかと思います。[^!-K \n]
は強調表示にも使えます。

 以上、御参考になれば幸いです。

[ ]
RE:20702 ユニコード文字のマクロ検索No.20705
秀丸担当 さん 06/01/10 10:42
 

既に解決されているようですが、Unicode独自の文字をマクロで扱うには、V5.00
以降であれば通常の文字と同じ感覚で扱うことができます。
V5.00未満である場合は、Unicode独自の文字はできません。

以下のようなマクロであっても、V5.00以降であればUnicode独自の文字を扱うこ
とができます。

$a = gettext(0,0,2,0);
nexthidemaru;
gofiletop;
searchdown2 $a;

このマクロは、2つのファイルを開いた状態で、アクティブな秀丸エディタの先
頭にある一文字だけを、次の秀丸エディタにあるかどうかを検索します。
400字やるためにはもう少し工夫が必要です。

[ ]
RE:20698 ユニコード文字のマクロ検索No.20706
おしょう さん 06/01/10 16:08
 
>vickwei 様、

ごていねいなフォロー、ありがとうございます。ENCODINGSHIFTJIS さんの「強調表
示」という発想がブレイクスルーになり、ご教示いただいたのと同様の正規表現でユ
ニコード文字を、そして別に外字およびチェックしたい文字を強調表示して解決でき
ていました。

>秀丸担当様、

あらためてマクロにも挑戦してみたのですが、マクロファイルの保存形式(エンコー
ド)に制限があるのでしょうか。UTF-16、UTF-8 で保存したマクロファイル中の漢字
はうまく認識されないような
のですが……。

それから、上述「強調表示」の中で特定の「ユニコード文字」を指定する方法はあり
ますか?

[ ]
RE:20706 ユニコード文字のマクロ検索No.20707
秀丸担当 さん 06/01/10 18:21
 

>あらためてマクロにも挑戦してみたのですが、マクロファイルの保存形式(エンコー
>ド)に制限があるのでしょうか。UTF-16、UTF-8 で保存したマクロファイル中の漢字
>はうまく認識されないような
>のですが……。

状況がよくわからないので、再現できる簡単なテキストとマクロを具体的に教え
ていただけるとわかるかもしれません。

できない場合がある可能性を考えてみたところ、UTF-16,UTF-8などでファイルを
開いたとき、[ファイルタイプ別の設定]→[フォント]でフォントが日本語でない
文字セットのものが選ばれている場合、正常に動きません。
この場合、「文字セットが日本語でないため…」という注意書きが現れています。

>それから、上述「強調表示」の中で特定の「ユニコード文字」を指定する方法はあり
>ますか?

[ファイルタイプ別の設定]→[表示とカラー]→[強調表示]での強調表示では
Unicode文字を指定できないので、強調はできないです。

検索文字列の場合、検索をするとUnicode文字も強調できます。

マクロの場合、\uを付けてUnicodeの文字コード4桁を指定して検索文字列を強
調することができます。

searchdown "\u3042", hilight;

[ ]
RE:20707 ユニコード文字のマクロ検索No.20708
おしょう さん 06/01/10 19:27
 
秀丸担当様、

>できない場合がある可能性を考えてみたところ、UTF-16,UTF-8などでファイルを
>開いたとき、[ファイルタイプ別の設定]→[フォント]でフォントが日本語でない
>文字セットのものが選ばれている場合、正常に動きません。

に該当するのかもしれません。日本語でないわけではないのですが、自作のフォント
を指定しており、フォントの定義テーブル等がどうなっているのかまったく理解でき
ていませんので……。ただ、エラーメッセージは出ません。

簡単なことから確認し直してみたところ、

searchdown2 "文字", noregular, hilight;

の1行でも、マクロファイルの保存がユニコード(utf-8、utf-16とも)だと、検索
文字が「人」などでも動作しません。1バイト文字は認識されます。

保存を Shift-JIS にすると漢字も認識されます。(が、当然のことながらユニコー
ド文字を検索対象にできません。)

検索を実行したいファイルは utf-8 で保存したファイルで、ファイルタイプ別の指
定で自作のフォントを指定しています。

(フォントの本体は、
http://www.yamadera.info/fonts/fonts-index.htm
で公開している真宗聖典明朝および真宗原典明朝です。)

なお、伝え忘れていましたが、秀丸のヴァージョンは 5.11 です。

[ ]
RE:20708 ユニコード文字のマクロ検索No.20711
秀丸担当 さん 06/01/11 13:08
 

フォントをダウンロードして試してみたところ、問題は確認できませんでした。

ただ、真宗聖典明朝のほうは解凍しようとしたところ破損となってしまい確認で
きませんでした。真宗原典明朝のほうは確認できましたが、問題無く検索できま
した。

エラーメッセージは、メッセージボックスが出るのではなく、[ファイルタイプ
別の設定]→[フォント]の中の「言語」の下の空間あたりに注意書きとして表示
されています。
もし出ているとしたら、正確には

「文字セットが日本語ではないため、全角文字を処理するマクロや強調表示の一
覧などが正常に動作しない可能性があります。」

という注意書きが現れているはずです。

こちらではV5.11で真宗原典明朝では確認できませんでした。

V5.11を使用されているとのことですが、ちょうどV5.12の修正で、

・Unicodeのファイルを開いたときでフォントをTahomaを使用しているとき基本
となるフォントの文字セットはShift-JISになるようにする。

という修正が加わっているので、もしかしたらV5.12ではできるかもしれません。

[ ]
RE:20711 ユニコード文字のマクロ検索No.20714
おしょう さん 06/01/11 20:29
 
秀丸担当様、

お手数をかけて強縮です。確認したところ、こちらでもフォントを適用しているファ
イルタイプに「注意書き」は出ていませんでした。

今当初の目的は強調表示の組み合わせで達成できているので、マクロへの挑戦は現在
かかえている作業が一段落し、秀丸がヴァージョンアップしてからのことにさせてい
ただこうと思います。そのときはまたよろしくお願いいたします。

(真宗聖典明朝は、念のためアップロードし直しておきます。)

[ ]