◀マクロトップへ
  • 200 複数行置換のPerlScript
    • 201 Re:複数行置換のPerlScript
      • 202 Re2:複数行置換のPerlScript
    • 203 Re:複数行置換のPerlScript
      • 205 Re2:複数行置換のPerlScript
        • 206 Re3: 複数行置換のPerlScript
          • 207 Re4: 複数行置換のPerlScript
            • 208 Re5: 複数行置換のPerlScript
  • [200] 複数行置換のPerlScript miau 2005年09月13日 22:38

    PerlScript で選択範囲の置換を行うマクロを作ってみました。
    http://miau.s9.xrea.com/blog/index.php?itemid=398
    Perl で置換処理を行いますので、複数行置換なんかも行えます。

    あと、PerlScript に関して色々試したことも書いてあります。
    http://miau.s9.xrea.com/blog/index.php?itemid=397

    概要としては、

    ・PerlScript で日本語を使う場合は、
     ファイル全体の文字数>スクリプト部分のバイト数
     となるように調整する。

    ・PerlScript には MsgBox() なんて隠し関数がある模様。
    (WScript.Shell の Popup() よりは楽?)

    ・ScriptControl を使えば VBScript 等も呼び出し可能。

    ・同一プロセスから Tk モジュールを複数回使用しようとすると、
     エラーとなる。(別プロセスで実行することで回避可能)

    ・ファイルパスを利用した変数($0)、関数(require())、
     モジュール(IPC::Open2)は使えない。
     ただし、open() や Cwd は問題なく使える模様。

    こんな感じです。
    • [201] Re:複数行置換のPerlScript maru 2005年09月14日 01:04

      ▼ miauさん

      「サクラエディタでPerlScriptマクロを使うためのメモ」
      どこにあるのでしょう?
      なぜかリンクが辿れませんでした。
      • [202] Re2:複数行置換のPerlScript りーや 2005年09月14日 06:37

        ▼ maruさん
        > 「サクラエディタでPerlScriptマクロを使うためのメモ」
        > どこにあるのでしょう?
        > なぜかリンクが辿れませんでした。

        えと、Yahoo eグループのジャンク品置き場のマクロのとこ
        http://groups.yahoo.co.jp/group/sakura-editor/files/User/MACRO/
        です。
        >>macro:140
        場所は変わってないと思うんですが、リンクしてなかった私が悪いかったですね
    • [203] Re:複数行置換のPerlScript りーや 2005年09月14日 06:48

      miauさん、ようこそ!!

      PerlScriptのマクロ作者さんの出現というのが私には一番うれしいコトです。
      ここまでされるのに随分とsakura.exeのタスクをハングアップされたことと思います。
      ドキュメントの方、私もありがたく参考にさせていただきます。

      最近、ドンドン使いやすくって、言う事無いくらい素敵な sakuraエディタですが、複数行の置き換えはTeraPad使ったりPerlのパイプを通したりしてました。
      痒いところに手が届いたこのマクロ。私も愛用させていただきます。
      • [205] Re2:複数行置換のPerlScript miau 2005年09月14日 14:24

        ▼ maruさん
        > なぜかリンクが辿れませんでした。

        ご指摘ありがとうございます。
        各ファイルに直リンクできないようですので修正しておきました。

        ▼ りーやさん

        おかげさまで、PerlScript という便利なものを知ることができました。
        blog のほうにもコメントくださって、ありがとうございます。

        ところでちょっと勘違いしていたんですけど、
        実行ディレクトリって編集中のファイルパスになるんですね。
        サクラエディタのパスになると勘違いして平気で open() とかしてました…。
        (ので、PerlReplace2.pls は動作させないほうがいいです。)

        りーやさんは require() で外部ファイル読んだりされているとのことですけど、
        パスの指定ってどうしてますか?
        サクラエディタのパスを取得するマクロとかって無いですよね?
        • [206] Re3: 複数行置換のPerlScript りーや 2005年09月14日 19:08

          ▼ miauさん
          >りーやさんは require() で外部ファイル読んだりされているとのことですけど、
          >パスの指定ってどうしてますか?

          私の場合は、マクロ置き場とかは、よく開くフォルダなので(?)
          マイドキュメント(C:\MyDocumentsに設定)の下に Sakura フォルダを置いて、
          その下に Macro フォルダ があります。これは、共通設定のマクロのところ
          で一度「参照(R)」ボタンでセットすると sakura.ini に書き込まれて、ツール-
          キーマクロの読み込みで開かれるディレクトリとなるみたいです。
          さらに、Macro フォルダの下に reauire フォルダも作って・・・

          例えばこの中の MIMEencode.pl 呼び出すとすると Macroフォルダ側の
          MIMEencode.pls での記述は

          push @INC, ( 'C:/MyDocuments/Sakura/Macro/require' );
          require "MIMEencode.pl";
          または、一行でダイレクトに
          require 'C:/MyDocuments/Sakura/Macro/require/MIMEencode.pl';
          というようになります。


          >サクラエディタのパスを取得するマクロとかって無いですよね?

          マクロ関数としてマクロファイル置き場のパスを取得する関数は無いと
          思います。Perl(Script)での荒っぽい裏技としては、sakura.iniから読む
          というテはあリかもです。(結構ストレスなく動きます)
          • [207] Re4: 複数行置換のPerlScript maru 2005年09月14日 22:34

            ▼ りーやさん
            > ▼ miauさん
            > >サクラエディタのパスを取得するマクロとかって無いですよね?
            >
            > マクロ関数としてマクロファイル置き場のパスを取得する関数は無いと

            パス取得のマクロ関数はあったほうが良いかもしれませんね。
            • [208] Re5: 複数行置換のPerlScript miau 2005年09月19日 20:54

              ▼ maruさん
              > パス取得のマクロ関数はあったほうが良いかもしれませんね。

              早速FILEさんが実装してくださいました(>>dev:4044)ので、
              これに対応したバージョンとして Ver 1.1 なんてものを作ってみました。
              http://miau.s9.xrea.com/blog/index.php?itemid=398

              ついでに下記の変更も加えていますので、
              邪魔だったら付近の処理を消してしまってください。

              ・範囲選択されていない場合はあらかじめ全選択して処理
              ・置換時に、置換式をクリップボードに保存
              ・クリップボードの内容が置換式っぽければデフォルト値として使用