web-dev-qa-db-ja.com

vimでカーソルを動かさずに特定の行をヤンクする方法は?

例えば

alt text

行4を行12のみにヤンクして貼り付けるにはどうすればよいですかカーソルを移動する必要はありません行4に?

alt text

40
Lazer

カーソルがすでに12行目にある場合、単純な

:4年
 P 

私のためにそれをします。

53
frabjous

これはどうですか:カーソルは11行目にあり、「vi」モードになっています。

:4co.<return>

あなたは明らかにパターンでそれを行うこともできます:

:/^Yank/co.<return>

「co」(コピー)の代わりに「mo」(移動)を使用して、ヤンクして置く代わりに、単に行を移動することができます。

10
Bruce Ediger

これを試して:

:4,4y  
P
9
Louis Salin

試してください:

:4co11

0の引数を使用して、1に貼り付けることができます。これは範囲でも機能します。

:m,n co k

mからnを行k+1にコピーします。さらに、バッファのどこにいるかは関係ありません。 moveコマンド、mも同様に機能します。

8
gvkv

これはそれを行うはずです:

:4,12y
p
k
2
Umang

最短:

:1t.は、現在の下に最初の行をコピーします。

範囲あり::1,4t.は、現在の下の1行目から4行目までを含みます。

相対行番号でも可能です:

:-1t.は前の行を現在の下にコピーします。

あなたの例では、:4t-1は4行目を必要な行の下にコピーします。

注::t:co[py]コマンドの同義語です。

2

他の人はすでにこれを行う最も直接的な方法である:4yについて言及していますが、それについて役立つ2つのメモを追加したいと思います。

1つは、:help rangeと入力すると、範囲を使用してExスタイルのコマンドに適用する方法についてすべて学習できます。多くの場合非常に便利で、行番号を使用するよりもはるかに用途が広いです。たとえば、ドキュメントの先頭の後に「yank」で始まる最初の行をヤンクする場合(たとえ最初の行にある場合でも)、:0/^yank/yを使用します。範囲の最も強力な部分は、それらを組み合わせる機能です。たとえば、:./^Chapter/+50?Pete?dは、「次の行を検索してWordの章から開始し(現在の行から順方向に検索)、50行前にジャンプして、逆方向に検索します単語ピートの場合は、最初に見つかった行を削除してください。」実際にカーソルを動かさないことを除いて、あなたが言うことを実行するだけです。

(このタイプの範囲指定を使用して、カーソルの下で関数名を検索し、次に「説明」と言った次の行を前方検索して特定のレジスターにヤンクするなど、ドキュメント作成を自動化しました。)

もう1つのヒントは、ジャンプについて知っておくべきことです。 :help jump-motionsと入力して完全に学習しますが、ここでは4行目にジャンプしてヤンクしてから4Gyy''でRETURNすることができます(またはアポストロフィの代わりにバックティックを使用して、開始したのと同じLINEではなく、正確な開始位置。)

2
Wildcard

Erwin Rooijakkers's answer に基づいて構築すると、カーソルの位置に関係なく、4行目が11行目の下にコピーされます。

:4t11
0
Lorin Hochstein