ドキュメントにさまざまなテキストテンプレートを簡単に貼り付けるために、vimの1つのレジスタで複数の行をヤンクしたいと思います。
たとえば、「iyyは現在の行のみをヤンクします。ビジュアルモードで複数の行を選択しようとすると、レジスターに書き込まれません。
助言がありますか?
使用する 3Y
3行をデフォルトのレジスターにヤンクします。 "i3Y
レジスタiにヤンクするため。
また、私のお気に入りの方法は、ヤンクしたい行を数えるのではなく、V
と移動コマンドを使用してビジュアルモードでそれらを選択し、次にy
を押してヤンクするか"_y
レジスターにヤンクします。
また、私はVisual Lineモードで複数の行を選択し、デフォルト以外のレジスタにヤンクしてみました。 Vjjj"oy
—そしてそれは動作します。
ファイル内のどこからでも、以下を使用できます。
:2,5y a
行2〜5をヤンクします。INTO REGISTER a
:7pu a
下線を貼り付けて登録7。
m
を使用して、バッファ名で開始をマークします(したがって、mx
と入力します)。コピーを停止する場所にカーソルを移動し、y'x
(切り取りと貼り付けの場合はd'x
)を入力します。次に、貼り付けたい場所にを移動し、p
と入力します。
コマンドの前に番号を付けて、操作する行数を取得します。 'text-object'(ブロックの場合は ']'、段落の場合は ')'を使用することもできます)-これは文脈上複数の行で機能します-デフォルトは通常1行です。例えば、 "r5yy
は、カーソルで始まる5行を「r」レジスタにヤンクします。 (または、:.,+4y r
exモードでも同じことを行います。)数値をテキストオブジェクトと組み合わせることもできます。 "r10y)
。
それが最後の検索オカレンスである場合に備えて、複数の行をヤンクすることが可能です。
たとえば、次の 複数行の貪欲でないパターン が与えられたとします。
/start\_.\{-}end/norm gn"iy
次に、@i
レジスタにstart
とend
の間のヤンクマルチラインパターンが含まれます(echo @i
による印刷)。
関連: 複数行の一致を印刷する方法? Vi