web-dev-qa-db-ja.com

複数の行をレジスターにヤンクするにはどうすればよいですか?

ドキュメントにさまざまなテキストテンプレートを簡単に貼り付けるために、vimの1つのレジスタで複数の行をヤンクしたいと思います。

たとえば、「iyyは現在の行のみをヤンクします。ビジュアルモードで複数の行を選択しようとすると、レジスターに書き込まれません。

助言がありますか?

46
ryz

使用する 3Y 3行をデフォルトのレジスターにヤンクします。 "i3Yレジスタiにヤンクするため。

また、私のお気に入りの方法は、ヤンクしたい行を数えるのではなく、Vと移動コマンドを使用してビジュアルモードでそれらを選択し、次にyを押してヤンクするか"_yレジスターにヤンクします。

また、私はVisual Lineモードで複数の行を選択し、デフォルト以外のレジスタにヤンクしてみました。 Vjjj"oy —そしてそれは動作します。

64
ulidtko

ファイル内のどこからでも、以下を使用できます。

:2,5y a

行2〜5をヤンクします。INTO REGISTER a

:7pu a

下線を貼り付けて登録7。

26
awilkening

mを使用して、バッファ名で開始をマークします(したがって、mxと入力します)。コピーを停止する場所にカーソルを移動し、y'x(切り取りと貼り付けの場合はd'x)を入力します。次に、貼り付けたい場所にを移動し、pと入力します。

Vimコマンドのチートシート

10
Nifle

コマンドの前に番号を付けて、操作する行数を取得します。 'text-object'(ブロックの場合は ']'、段落の場合は ')'を使用することもできます)-これは文脈上複数の行で機能します-デフォルトは通常1行です。例えば、 "r5yyは、カーソルで始まる5行を「r」レジスタにヤンクします。 (または、:.,+4y r exモードでも同じことを行います。)数値をテキストオブジェクトと組み合わせることもできます。 "r10y)

6
Arcege

それが最後の検索オカレンスである場合に備えて、複数の行をヤンクすることが可能です。

たとえば、次の 複数行の貪欲でないパターン が与えられたとします。

/start\_.\{-}end/norm gn"iy

次に、@iレジスタにstartendの間のヤンクマルチラインパターンが含まれます(echo @iによる印刷)。

関連: 複数行の一致を印刷する方法? Vi

1
kenorb