3

インデントされた行のブロックが {{{ と }}} で囲まれるように、テキストファイルを操作したいと考えています。

これは私が立ち往生している場所です:

  1 /^\ [^\ ]/,/^[^\ ]/{        # match range: all indented plus line after that
  2    b fixIndented            # branch
  3 }
  4 
  5 /^[^\ ]/{p;b}               # print all non-indented outside range and exit.
  6                             
  7 :fixIndented
  8 /^[^\ ]/{                   # match last line of range
  9    x;                       # swap Holdbuffer und patternSpace, edit patternSpace
 10    i\
 11       {{{
 12    a\
 13       }}}
 14    p;
 15    x;p;
 16 }
 17 H;                          # write each line in range into holdBuffer

15 行目はホールド バッファー (9 行目で交換したものを含む) を読み込んでから、操作されたパターン スペース (10 行目から 13 行目) が出力された(14 行目)に出力する必要があると思います。しかし、そうはなりません。代わりに、ホールド バッファーからの行をパターン スペースにマージするように見えます。そのようです:

bla
blubb
 foo1
 bla2
 foo3
sadgfasdf
bar
foo

になります:

bla
blubb
      {{{

 foo1
 bla2
 foo3
sadgfasdf
      }}}   
bar
foo

誰かがここで私を正しい方向に向けるために時間を割いてくれたら、とても感謝しています. ありがとう、

4

1 に答える 1