◀一般トップへ
  • 5283 テキストファイルの編集について
    • 5287 Re: テキストファイルの編集について
    • 5288 RE: テキストファイルの編集について
    • 5291 Re:テキストファイルの編集について
      • 5295 Re2:テキストファイルの編集について
        • 5308 マクロ改修
          • 5313 Re:マクロ改修
      • 5296 Re2:テキストファイルの編集について
        • 5298 Re3:テキストファイルの編集について
    • 5439 Re:テキストファイルの編集について
  • [5283] テキストファイルの編集について YU1 2006年06月23日 13:30

    YU1と申します。

    テキストの編集について、教えて頂けませんでしょうか?

    例えばあるテキストの行番号55000から72000を削除したい場合、
    MIFESですと”行単位選択開始”を選択し、”指定位置へジャンプ”
    にて範囲を選択し削除していました。

    サクラエディタで同様のことを行なうと、”指定行へジャンプ”を
    実行した段階で”選択が解除”されてしまい編集が出来ません。
    またこれと同様に、ある行範囲内で文字の入れ替えを行う編集機能も
    も使うことが出来ず困っています。

    ご助力頂けませんでしょうか?
    宜しくお願い致します。
    • [5287] Re: テキストファイルの編集について しみづ 2006年06月24日 13:55


      >実行した段階で”選択が解除”されてしまい編集が出来ません。

       私も似たような、履歴を移動しての選択ができなかった覚えがあります。
       行番号がわかっているのでしたら、開始点に左クリックでカーソルを置いて、スクロールバーで終了点まで動かして、終了点にShift+左クリックで終点指定すればできると思います。
    • [5288] RE: テキストファイルの編集について すい 2006年06月24日 22:01

      >サクラエディタで同様のことを行なうと、”指定行へジャンプ”を
      >実行した段階で”選択が解除”されてしまい編集が出来ません。

      なんかすごく気持ち分かったりします。
      このエディタは意外と そういうエディタとして基本的な編集作業が出来ません。(^^;)
      範囲選択時は一生懸命、手作業でその選択終了行まで手作業で
      移動しなくてはならず大変です。

      他にも「現在のカーソル位置から、とある文字列がある場所までを矩形範囲選択」
      が出来ないんですよね。

      普通の範囲選択なら

      1.[F6] (範囲選択開始)
      2.[Ctrl]+[F] で検索を実行。以降 [F3] (次を検索) で次の文字位置まで

      で、特定の文字列の場所までを簡単に範囲選択できますが、なぜか
      矩形範囲選択だと、同様の事が出来ない。
      検索すると矩形範囲選択だけはなぜか選択解除されてしまってかなり不便。


      ブックマークを使っても良いなら、選択終了行にあらかじめブックマークを
      設定しておいて

      1.[F6] (範囲選択開始) または [Shift]+[F6] (矩形範囲選択開始)
      2.[F2] (次のブックマークへ)

      で何とかなりますが、、、
      いちいち先に選択終了行にブックマークを設定してから~~
      なんて面倒ですしねぇ。
      そもそもブックマークを大量に設定して編集しているファイルでは使えない手ですし。


      >またこれと同様に、ある行範囲内で文字の入れ替えを行う編集機能も
      >も使うことが出来ず困っています。

      こちら、何を言いたい(どういう作業をやりたい)のかサッパリ分からないんですが、、、
      誰もアドバイスも何も出来ないんじゃ...?
    • [5291] Re:テキストファイルの編集について YU1 2006年06月26日 08:54

      しみず様、すい様、丁寧な御回答ありがとうございました。

      背景から申しますと、当方工作機械を動かすNCプログラム
      製作を生業しています。今まではMIFESを使用していた
      のですが、とある理由からフリーで使えるテキストエディタ
      を探してました。

      そこで紹介されていました”サクラエディタ”をインスト
      ールし、使用してみたのですが、前記の通り困った点があり
      まして、こちらで質問させて頂きました。

      任意の行範囲の指定方法は御二人の御回答で乗り越えられ
      そうです。比較的短いテキストなら問題無いのですが、
      100万行を超えるような大きいテキストの編集は少し
      (ブックマークを使用する分)不便かも知れませんネ。

      >またこれと同様に、ある行範囲内で文字の入れ替えを行う編集機能も
      >も使うことが出来ず困っています。

      文字の入れ替えについてですが、例えば

      テキストの
      行番号50000から85000の間で

      F2000をF1200に
      F300をF100に
      D05をD12に

      変換する時にはどうしたら良いのか判らなかった為、
      追加質問させて頂きました。
      (任意の範囲の選択が出来なかった為)

      判り難い質問文で大変申し訳無かったです。
      どうか宜しくお願い致します。
      • [5295] Re2:テキストファイルの編集について すい 2006年06月26日 23:45

        マクロでやってみました。指定行までを選択。
        マクロを実行すると何行までを選択するか聞いてきます。

        ただ、ブックマークを使用しているので、このマクロを使用すると
        編集中ファイルの他のブックマークが全て解除されてしまいます。

        マクロファイル名「SELLINE.PPA」
        -----↓ここから↓-----
        // 実行には PPA.DLL が必須です。
        // マクロファイルの拡張子は .PPA でなくてはなりません。

        // 現在のカーソル位置から指定行までを選択する。
        // このマクロを使用すると、編集中ファイルの全ブックマークが解除されるので注意!!

        var
        cx,cy:Integer;
        ty:Integer;
        begin
        // 現在位置を cx,cy に記憶しておく。
        cx := StrToInt( S_ExpandParameter( '$x' ) ); // 実行開始時の列
        cy := StrToInt( S_ExpandParameter( '$y' ) ); // 実行開始時の行

        // 行番号を入力させる
        ty := StrToInt( InputBox( '行番号を入力' , '何行目までを選択しますか?' , '' ) );
        if( ty = 0 ) then Exit; // 何も入力されなかったら、ここでマクロ中断。

        S_BookmarkReset(0); // ブックマークの全解除
        S_Jump(ty,0); // 目的行まで飛ぶ
        S_BookmarkSet(0); // ブックマーク設定・解除

        // カーソル位置を cx,cy へ戻す。
        S_Jump(cy,0);
        while ( StrToInt( S_ExpandParameter( '$x' ) ) < cx ) do S_Right(0); // カーソル右移動

        S_BeginSelect(0); // 範囲選択開始

        if( cy < ty ) then
        begin // ↓方向に選択する場合
        S_BookmarkNext(0); // 次のブックマークへ
        S_BookmarkReset(0); // ブックマークの全解除
        S_Left(0); // カーソル左移動
        S_Right(0); // カーソル右移動
        S_Down(0); // カーソル下移動
        end
        else
        begin // ↑方向に選択する場合
        S_BookmarkPrev(0); // 前のブックマークへ
        S_BookmarkReset(0); // ブックマークの全解除
        end
        ;
        end;
        -----↑ここまで↑-----
        • [5308] マクロ改修 すい 2006年06月29日 00:40

          >マクロでやってみました。指定行までを選択。
          >マクロを実行すると何行までを選択するか聞いてきます。

          これ、移動履歴を使えばブックマーク使わなくても出来ました。(汗)

          # 移動履歴の事をド忘れしていました。 (;^^ゞ

          「指定行へジャンプ」を実行すると、その指定行へジャンプする前の
          カーソル位置が自動的に移動履歴に登録されますので、以後、

          ・[Alt]+[P] 編集(E) → 移動(O) → 移動履歴 前へ(P)
          ・[Alt]+[N] 編集(E) → 移動(O) → 移動履歴 次へ(N)

          で「指定行へジャンプ」の 実行前の位置←→実行後の位置 を交互にカーソル移動出来ます。

          で、移動履歴でのカーソル移動では選択状態は解除されませんので。。。

          ただし、移動履歴で移動後、何らかのカーソル操作を行わないと選択範囲が反映されませんが。
          「無駄に → 行って ← に戻る」とか。

          このやり方でマクロをブックマークを全く使用しない、もちろん解除も何もされない
          ように改修してみました。(全体的に簡潔スッキリになりました)

          マクロファイル名「SELLINE.PPA」
          -----↓ここから↓-----
          // 実行には PPA.DLL が必須です。
          // マクロファイルの拡張子は .PPA でなくてはなりません。

          // 現在のカーソル位置から指定行までを選択する。

          var
          cy:Integer; // マクロ開始時の行(選択開始行)を記憶しておくための整数数値変数を用意する
          ty:Integer; // 選択終了行を記憶しておくための整数数値変数を用意する
          begin
          cy := StrToInt( S_ExpandParameter( '$y' ) ); // 現在行を cy に記憶しておく。

          // 行番号を入力させる
          ty := StrToInt( InputBox( '行番号を入力' , '何行目までを選択しますか?' , '' ) );
          if( ty = 0 ) then Exit; // 何も入力されなかったら、ここでマクロ中断。

          S_Jump(ty,0); // 目的行まで飛ぶ - ジャンプ前の位置が自動的に移動履歴に登録されている
          S_MoveHistPrev(0); // 移動履歴: 前へ - カーソルを S_Jump 実行前位置へ戻す
          S_BeginSelect(0); // 範囲選択開始
          S_MoveHistNext(0); // 移動履歴: 次へ - カーソルを S_Jump 実行後位置へ移動

          if( cy < ty ) then
          begin // ( 選択開始行cy < 指定行ty ) つまり ↓方向に選択する場合
          S_Down(0); // カーソル下移動
          end
          else
          begin // ↑方向に選択する場合
          S_Right(0); // カーソル右移動 - 移動履歴で移動後、カーソル移動しないと選択状態にならないらしい。
          S_Left(0); // カーソル左移動 なので無駄に → 行って ← に戻る。
          end
          ;
          end;
          -----↑ここまで↑-----
          • [5313] Re:マクロ改修 YU1 2006年06月29日 08:27

            > これ、移動履歴を使えばブックマーク使わなくても出来ました。(汗)

            すい様、大変お手数をお掛けしています。
            当方のように見ず知らずの者に、ここまで対応して頂き、とても感謝しております。
            任意の行範囲指定だけでも、手段はいろいろあるのですね。
            勉強になりました。

            使いこなせるように、少しずつですが頑張って行きたいと思います。
            どうもありがとうございました。
      • [5296] Re2:テキストファイルの編集について すい 2006年06月26日 23:55

        >テキストの
        >行番号50000から85000の間で
        >
        >F2000をF1200に
        >F300をF100に
        >D05をD12に
        >
        >変換する時にはどうしたら良いのか判らなかった為、

        50000行から85000行を範囲選択しておいてから
        [Ctrl]+[R] で置換ダイアログ出して

        ・左下の「置換ダイアログを自動的に閉じる(L)」チェックを off
        ・右下の範囲で「選択範囲(S)」を選択する

        という状態にしておいて

        ・置換前(N):F2000
        ・置換後(P):F1200
        と入力してから [すべて置換(A)] ボタン

        ・置換前(N):F300
        ・置換後(P):F100
        と入力してから [すべて置換(A)] ボタン

          ・
          ・
        <<以下略>>

        とか?
        • [5298] Re3:テキストファイルの編集について YU1 2006年06月27日 16:48

          すい様、当方の為にマクロまで製作して頂き、
          大変感謝しております。ありがとうございました。

          PPA.DLLも手に入り、無事指定行範囲で変換する
          ことが出来ました。

          これからサクラエディタを有効に使わせて頂きたい
          と思います。これからもどうか宜しくお願い致します。

          M(_/_)M


    • [5439] Re:テキストファイルの編集について げんた 2006年09月23日 12:46

      ▼ YU1さん
      > MIFESですと”行単位選択開始”を選択し、”指定位置へジャンプ”
      > にて範囲を選択し削除していました。
      > サクラエディタで同様のことを行なうと、”指定行へジャンプ”を
      > 実行した段階で”選択が解除”されてしまい編集が出来ません。
      次のバージョンでは,選択解除しないように動作変更します.