タグ付けされた質問 「global-command」

6
連続した重複をすべて削除する
このようなファイルがあります。 Move to 230.00 Hold Hold Hold Hold Hold Hold Move to 00.00 Hold Hold Hold Hold Hold FooBar Hold Spam Hold 次のようになりたいです。 Move to 230.00 Hold Move to 00.00 Hold FooBar Hold Spam Hold vimがこれをすばやく実行できる方法が必要であると確信していますが、どのように頭をかき回すことはできません。これはマクロの力を超えており、vimscriptが必要ですか? また、「Holds」の各ブロックに同じマクロを適用する必要がある場合でも問題ありません。ファイル全体を取得する単一のマクロである必要はありませんが、それは素晴らしいことです。

2
すべての行をどのパターンに一致させるのですか?
特定のパターン(など;)がある行に対してのみ行を結合したいのですが、g/;/j数回呼び出さないと、期待どおりに機能しません。 たとえば、次のコンテンツ: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c 使用時::g/;/j出力は次のとおりです。 a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c または:g/;/-j与える: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c と似ています:g/;\_.\{-};/j。 私の予想される出力は: a 1; 2; 3; 4; 5; b 6; …

5
ファイルの2つのパターン間のコンテンツを置き換える方法は?
ファイルの形式は次のとおりです。 <common> fitnes=0 genetic=1 method=0 </common> <inputs> foo=bar bar=foo </inputs> <limits> balance=200.00 </limits> との間にあるものをすべて削除<inputs>し</inputs>(パターンit-selfを除く)、別のファイル(例:)のコンテンツに置き換えますfoo.txt。言い換えるとfoo=bar、bar=fooと行が別のコンテンツに置き換えられます。 おそらく、次のように、複数行の一致を削除する方法に似ています。 :g/<inputs/,/inputs>/d しかし、別のファイルのコンテンツを挿入するために何を置き換える必要があるかはわかりませんdが、一致するパターンを保持したいと思います。 同様の方法は、htmlタグの内部コンテンツを削除することです。 :/<inputs>/norm vitd しかし、ファイルのコンテンツをそれにどのように追加するかわかりません。 ライナーは別のスクリプトの一部になるため、理想的には1つのライナーを見つけようとしています。 どうすればそれを達成できますか?

1
Exスタイルの置換コマンドで連続番号を使用するにはどうすればよいですか?
たとえば、「Do」という単語で始まるすべての行の前に数字を入れたいとしましょう。コマンドはの:%s/^(Do )/1. \1/ようになりますが、毎回同じ番号ではなく連続して番号を適用するにはどうすればよいですか? マクロとCtrl-Aを使用してこれを行う多くの方法をよく知っていますが、より複雑なExモードコマンドで使用するために、タイトルの質問に対する答えを正確に知りたいことに注意してください。 マクロアプローチがそれほど簡単ではない別の例として、「Section」という単語のすべてのインスタンスに番号を追加し、それらに連続番号を付け、「Chapter」で始まる各行の後にカウントを再開したいとします。追加する数を実際に増分することを除いて、これをほぼ実行できるEx-modeコマンドは次のとおりです。 :g/^Chapter/;/^Chapter/-s/Section\zs/ 1/g Exモードの代替コマンドで数値をインクリメントする簡単な方法が非常に役立つことがわかります。

4
行にあるグローバル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 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.