0

次のテキストがあるとします。

a test1
b test2
a test3
b test4

文字 a で始まる行を抽出し、このようにファイルの最後に配置するために使用するコマンドは何ですか?

b test2
b test4

a test1
a test3

:g/^a/d と p を使用すると、最後の一致のみが貼り付けられます。

b test2
b test4

a test3
4

1 に答える 1

5

デフォルトレジスタを設定する(追加しない)a test3ため、最後にしか表示されません。:dパターンに一致する行ごとに指定されたコマンドを 1 回実行するため:g、貼り付けたときに最後の行のみが既定のレジスタに含まれます。

これを行う標準的な方法は、:move(略して:m) コマンド --を使用すること:g/^a/m $です。に一致するすべての行について^a、最後の行 ( $) のすぐ後ろに移動します。

最初のアプローチを少し変更する:dと、レジスタに追加し、後でそのレジスタを貼り付けることができます。

:let @a=''  " Clear register a
:g/^a/d A   " For every line that matches ^a, delete it
            " and append the contents to register a
:$put a     " Paste the contents of register a after the last line

最後の部分は、通常モード コマンドを使用して実行することもできます"ap

于 2013-04-12T04:26:19.327 に答える