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


39

例えば

代替テキスト

カーソルを行4 に移動せずに行4のみを行12にヤンクアンドペーストするにはどうすればよいですか?

代替テキスト


「ヤンクして!」という事実に基づいてあなたの質問に答えました。それは5行目に表示され、あなたの第二のスクリーンショットでは4行目にある
ルイサリン

答えてくれて@Louisに感謝します。スクリーンショットを更新しました。
レーザー

回答:


51

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

:4年
P

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


1
いいね!に相当するものはありxますか?私がしようとしたとき:4x、私が得ますE140: Use ! to write partial buffer。ありがとう!
-dotancohen

これは驚くべきことだと言わざるを得ません:D
nXqd

@dotancohen:4d
n.st

相対行番号でこれを行う良い方法はありますか?
TrungDQ

相対番号では、+と-を使用します。したがって、-4はカーソルの4行上、+ 4はカーソルの4行下です。
-rickythefox

10

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

:4co.<return>

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

:/^Yank/co.<return>

「co」(コピー)の代わりに「mo」(移動)を使用して、yankとputの代わりに単に行を移動できます。


1
さらに短く(コピーコマンドとしてのtはedからの残りです)::4t.
tarleb


8

試してください:

:4co11

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

:m,n co k

行をコピーしますmを通じてnラインへk+1。さらに、バッファのどこにいるかは関係ありません。moveこのコマンドは、m同様に動作します。


2

これはそれを行う必要があります:

:4,12y
p
k

1
いいえ、行番号4〜12をヤンクします
。–レーザー

4行目から12行目までをコピーして貼り付けることを意味しました。
Lazer

編集済み。これはあなたが望んだものですか?
ウマン

2

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

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

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

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


2

最短:

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

範囲を有する: :1,4t.コピーは1(含む)4への電流の下の行。

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

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

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

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

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