◀一般トップへ
  • 2813 連続する改行を一つにしたい
    • 2821 RE: 連続する改行を一つにしたい
      • 2859 Re2: 連続する改行を一つにしたい
        • 2864 Re3: 連続する改行を一つにしたい
          • 2865 Re4: 連続する改行を一つにしたい
            • 2866 Re5: 連続する改行を一つにしたい
        • 2898 Re3: 連続する改行を一つにしたい
  • [2813] 連続する改行を一つにしたい MMX 2003年03月12日 12:21

    余分な改行のあるテキストを縮めるために
    全置換 \n\n → \n
    したが、ヒットしませんでした。
    ヘルプでは文字しか検索できない雰囲気を感じました

    マクロを書くのでしょうか?
    インストール0日での質問です。
    記事検索 「連続 改行」では見つかりませんでした
    よろしくお願いします。
    • [2821] RE: 連続する改行を一つにしたい みく 2003年03月12日 18:51

      >タイトル: RE: 連続する改行を一つにしたい
      >発言者: MMX
      >余分な改行のあるテキストを縮めるために
      >全置換 \n\n → \n
      >したが、ヒットしませんでした。
      >ヘルプでは文字しか検索できない雰囲気を感じました

      残念ながら複数行には対応していません。
      • [2859] Re2: 連続する改行を一つにしたい MMX 2003年04月07日 16:19

        ▼ みくさん
        Ver.1.3.8.2
        $が普通に使えないのは不思議な気分、はともかく。
        キーマクロの雛形を作ろうとしたが?
        空白行を改行一つに、うまく行く
        ^[ \t]+[\r\n]+
        \r\n
        うまく行かない、連続改行がMMM...にならない
        ^[\r\n]+
        M
        全置換後のカーソル位置は次行いる?仕様ですか? <<==ここ
        改行のみそうなる(次の行に行く)?
        ddd→hとかの文字ではならない。
        ●秀丸、MIFES、xyzzyでは行の再編成は
        全置換直後には起きていないようですが。直後タイプも
        いくつかあるが使いやすいとは思えなかった。
        =============== ここで挫折 =====
        行頭M一つになる
        ^M+
        M
        特殊記号Mを改行に戻す
        M
        \r\n

        • [2864] Re3: 連続する改行を一つにしたい MMX 2003年04月08日 10:39

          ▼ みくさん
          行の再編成を含む全置換は特殊技能が必要そうなので
          素直にマクロを試しました。
          =========== PPA
          //キーボードマクロのファイル
          S_GoFileEnd(0); // ファイルの最後に移動

          while
          S_SearchPrev('^\\r\\n', 4)
          do // 前を検索
          S_Replace('^\\r\\n', '★', 4); // 置換

          S_ReplaceAll('^★+', '★', 4); //
          S_ReplaceAll('^★', '\\r\\n', 4); //
          S_ReDraw(0); // 再描画
          =========
          ファイル末尾から改行のみを、★に変換し、1つに簡約、改行に
          もどす。ですが。while の判定で失敗。

          検索関数は検索結果を返さないのですか?!
          マッチした文字数とか。

          まさか、カーソルが動かなかったら検索失敗と扱うとか。
          • [2865] Re4: 連続する改行を一つにしたい すい 2003年04月08日 12:46

            >検索関数は検索結果を返さないのですか?!
            >マッチした文字数とか。

            返値を返すのは
            ・S_GetFilename
            ・S_GetSelectedString
            ・S_ExpandParameter
            以外にありません。


            >まさか、カーソルが動かなかったら検索失敗と扱うとか。

            それも手です。
            今回の場合は検索直後に S_GetSelectedString で選択範囲文字列を取得して
            その文字列(または文字列長)を調べるのが良いかな?
            # 最近のバージョンじゃないと駄目ですが。

            while (True) do begin
            S_SearchPrev('^\\r\\n', 4);
            if ( Length(S_GetSelectedString(0)) = 0 ) then Break;
            ~~
            他の処理
            ~~
            end;

            みたいな感じ。
            # 動作確認していませんけど。
            • [2866] Re5: 連続する改行を一つにしたい MMX 2003年04月08日 14:59

              ▼ すいさん
              > 以外にありません。
              if文の原料が少ないと苦しいです。
              エディタの状態値(Getxxxx)は不足している。
              ------ 連続空白行圧縮.PPA
              S_GoFileEnd(0); // ファイルの最後に移動
              while True do begin
              S_SearchPrev('^[ \t]*\r\n', 4); // 前を検索
              if S_GetSelectedString(0) = '' then Break;
              S_InsText('★'): // 置換
              end;
              S_ReplaceAll('^★+', '\r\n', 4); //
              -------------------------------------
        • [2898] Re3: 連続する改行を一つにしたい 蒔田 信幸 2003年05月09日 02:03

          ▼ MMXさん
          Ver. 1.3.9.0 V

          step1.「\r\n」->「\n」
          step2.「^\n+」->「」
          step3.「\n」->「\r\n」

          3回の全置換で、結果的にですが、うまく行きました。
          私、マクロには暗いので手作業でどうぞ。

          また、変換中の文字「\n」を「\r」に読み替えても同じです。
          蛇足ですが、step2.は「^[ \t\n]*\n」でも可能です。