行にあるグローバルexコマンドのパターンを使用して、別の行で置き換えます
私のfortranコードには、次のような多くのブロックがあります subroutine name(arg1,arg2,arg3,...) : end subroutine そして私は彼らになってほしい subroutine name(arg1,arg2,arg3,...) : end subroutine name これらの各ブロックは、任意の量のスペースでインデントできます(実際、そのようなブロックはネストできます)。コマンドで試してみました :g/^ *subroutine \(.*\)/;/end subrout/s/end subroutine/& \1 バッファ\1が空であるように、これは各行を変更します(一番下の行でそれを読みます)。コマンド :g/^ *subroutine \(.*\)/;/end subrout/s/end subroutine/& hello うまく機能しますが、明らかに私が望んでいるものではありません。だから問題は、グローバルexコマンドで一致したパターンを置換文字列でどのように使用できる:gかです。 編集 質問を編集しているのは、投稿した時点で、私が参照した特定のケースに対する回答である回答を急いで受け入れたが、質問のタイトルは少し一般的ではなかったためです。 私は要点に行きます。私は次のようなファイルを持っています(できるだけ一般的にするだけで意味がありません)。 # sec1 fun1 are you a function? fun2 no. fun3 ok, nice to meet you! # 2nd part first …