特定の行番号で行をヤンクする方法は?


回答:


59

から:help :yank

:[range]y[ank] [x]      Yank `[range]` lines [into register x].

したがって、4行目をヤンクするには、次のように入力します。

:4yank

これを挿入モードから簡単に行うことができます<C-o>; これにより、1つのコマンドを実行した後、挿入モードに戻ります。例えば:

<C-o>:4yank

もちろん、他の範囲を使用することもできます。いくつかの例:

  • 1行目から3行目: :1,3yank
  • バッファ全体: :%yank
  • 現在の行からバッファの最後まで: :.,$:yank
  • 現在の行と次の3: :.,+3yank
  • 現在の行と前の3行目: :-3,.yank
  • 現在の行の3行上にある行: :-3yank

範囲について覚えておくべき最も有用なこと:

  • の形式です:line1,line2command
  • Aは、.現在の行(;あなたが実際にほとんどの場合、ドットを省略することができている:.,+3yank:,+3yank同じです)
  • +nおよびを使用して、現在の位置に相対的な行を指定します-n

詳細については:help [range]、を参照してください。


6
<Co>に言及することに対するボーナスポイント、私はそれを十分に活用していません。
-PhilippFrank

7
それはあなたが省略できることにも言及する価値だ:4yank:4y
NewbieOnRails

35

Carpetsmokerの答えに加えて、素晴らしい:help :mとを指摘する必要があり:help :tます。

行4を現在の行のすぐ下にコピーする場合は、次の操作を実行できます。

:4t.

または、その行を現在の行のすぐ上にコピーする場合:

:4t-

1

あなたが持っている元モードコマンドに加えて、コマンドモードでもそれを達成できます。例えば:4GY''-行4 4Gにジャンプ(Y)、行をヤンク()、前の行に戻る('')。

ジャンプマークを使用することもできます。2番目の質問の場合:mm3kY'm-意味:マークmを設定(mm)、3行上に移動(3k)、行をヤンク(Y)、マークmに戻る('m)。


1
前者は同じ行と列に戻るため、「」を使用する方がおそらく「より」お勧めです。`m vs. 'mについても同じです。
ジェームスサン

同意する。(Wikiマークアップに特別な意味があるため、リテラルバックティックスを作成する方法はありますか?)-そうでなければ、コメントは私の答えの修正として、また読者へのヒントとして役立ちます。
ジャニス

インラインコードを区切るには、複数のバックティックを使用する必要があります(cf、daringfireball.net/projects/markdown/syntax#code)。質問/回答で機能することは知っていますが、コメントで機能させることができませんでした。
ジェームスサン

1

入力するだけ

:4y

行4をヤンクする

名前のないレジスタに入ります。次に、(たとえば)p他の場所に配置するために使用できます。また[n]p、10pを使用して10回貼り付けることもできます。

「a」などの名前付きレジスタに入れることができます

:4y a

2
「ay4が正しくないように名前付きレジスターに入れることに関する部分。それを行うと、vimは「4 whats?」と言うのを待っています。例えば、Enterを押すと、現在の位置。/foo<Enter>と入力すると、「foo」などの4番目の出現までヤンクされます。
Don Hatch

最後のコマンドは次のようになります4G"ayy
ロメインル

0

できるよ

:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)

相対数を設定すると、コードの行間を移動するのにも役立ちます。

:set relativenumber

これで、カーソルの上の5行目を次のようにコピーできます。

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