EclipseでVimの行全体を複製する方法は?


1624

どのように私は、全体のラインが重複しないVimのと同じようにCtrl+ DのIntelliJ IDEA / ReSharperのかでCtrl+ Alt+ / Eclipseの


49
人々はもはやvimtutorを実行しませんか?これはおそらくVimの使い方を学んでから最初の5分以内です。
ダッシュトムバン

131
この行を複製しますか?Yes Pリース。:)
Stavr00 2017年

3
FWIW過去2か月でvimtutorを約10回実行しましたが、この概念はカバーされていません。「dd」と「v-ナビゲート-y」に続いて「p」を実行する方法を示します。ここで求められているように、削除せずに1行をコピーする方法はわかりません。
danielson317

回答:


2769

yyまたはY(ニーモニック:行をコピーするY ANK)、
または
ddD eleteライン(のようなあなたは、クリップボードのような「登録」に削除されたどのようなVimのコピー、カット動作)

その後

pp ASTEコピーまたはテキストを削除した後、現在の行
または
Pのp ASTEコピーや削除されたテキストの前に、現在の行


129
優れた点。何らかの理由で、私はyを2回
押すの

25
@camflan Yは「カーソルから最後までコピー」する必要があると思う
Dzung Nguyen

42
2yyを使用して2行(およびその他のn行)をコピーできます
Amir Ali Akbari

5
@nXqd:はい、ユーザーの大部分がにマップYy$ます。(Dandと一貫していCます;(Vi互換ではありません(だれも気にしません。)))それはでも提案されてい:help Yます。
アーロン・トーマ2014年

11
2行をコピーするには、特に1文字を2倍にしないので、yjまたはを移動するだけでさらに高速になりykます。プラス、yk下位バージョンで2yy行うことができない、とあなたが後方に到達するために行数を置くことができるy9jy2k、など。唯一の違いは、あなたのカウントがなければならないことであるn-1の合計n行が、あなたの頭があることを学ぶことができますとにかく。
ゼルク2014年

406

通常モード:他の回答を参照してください。

例の方法:

  • :t. 行を複製し、
  • :t 7 7行目以降にコピーします
  • :,+t0ファイルの先頭にある現在の行と次の行をコピーします(,+範囲の同義語です.,.+1)、
  • :1,t$行の先頭からカーソル位置までをコピーします(1,範囲の同義語です1,.)。

コピーする代わりに移動する必要がある場合は、の:m代わりに使用してください:t

あなたがそれを組み合わせる場合、これは本当に強力することができ:gたり:v

  • :v/foo/m$ パターン「foo」に一致しないすべての行をファイルの末尾に移動します。
  • :+,$g/^\s*class\s\+\i\+/t.class xxxカーソルの直後のフォームの後続のすべての行をコピーします。

参考::help range:help :t:help :g:help :mおよび:help :v


1
:ビジュアルモードでを押すと、に変換され'<,'>、ビジュアル選択がまたがるライン範囲が事前に選択されます。したがって、ビジュアルモードで:t0は、最初に行がコピーされます。
Benoit

1
記録のために:コロン(:)を入力すると、コマンドラインモードになり、Exコマンドを入力できます。vimdoc.sourceforge.net/htmldoc/cmdline.html Exコマンドは非常に強力で簡潔なものになります。yypソリューションは「通常モード」コマンドです。遠くの行または行の範囲をコピー/移動/削除したい場合、Exコマンドの方がはるかに高速です。
Niels Bom

7
回答自体の問題によるものではありません(私の状況では機能しませんが、複製先の行番号がわかりません)。よく検索される質問。
mjaggard

9
@mjaggard:スコアに関係なく、受け入れられた回答は常に一番上になります。はい、私はその答えを補足として追加しました、そしてそれはそれがOPによく合っているようです。
Benoit

7
:t.質問に対する正確な答えです。
Burak Erdem

294

YPまたはYpまたはyyp


Y通常はy$(行の終わりではなく(現在のカーソルの位置から)、行の終わりまで)(ヤンク(コピー))に再マッピングされます。この行で.vimrc:nnoremap Y y$
アーロントーマ

1
かわいそうな老人を忘れないでくださいyyP
icc97

253

vimにコピーして貼り付ける

これより簡単なことはありません!通常モードから:

yy

次に、貼り付けたい行に移動し、

p

34
gifを作るのに何を使いましたか?
ゾルタン

4
@Zoltán小さいサイズのLiceCapを使用できます
onmyway133

53

yy

現在の行を削除せずにヤンクします

dd

現在の行を削除します

p

ますputラインは、従来の方法のいずれかによってつかん


3
これは最初に来ましたが、重複は受け入れられます:stackoverflow.com/a/73357/1438029
Geoffrey Hale

44

これを行う:

まず、yy現在の行をコピーし、次にp貼り付けます。


20
スペースは入力しないでください。
Niels Bom

1
はい、カーソルが行の最後にあり、図のようにスペースを入力すると、ヤンクした行の2行下に、ヤンクした行を複製します。

44

別の方法が必要な場合:

"ayy:これは行をバッファに保存しaます。

"ap:これにより、バッファの内容がaカーソル位置に配置されます。

これには多くのバリエーションがあります。

"a5yy:これは5行をバッファに格納しaます。

Vimのヘルプファイル」を参照してください。


おかげで、私はこれをバインドとして使用しました:map <Leader> d "ayy" ap
frbl

39

yyp -「イッピー!」

間に番号がある複数行:

y7yp


17
7yyはy7yと同等であり、おそらくその方法を覚えやすくなります。
graywh 2009年

10
y7yp(または7yyp)が役立つことはほとんどありません。カーソルはコピーされた最初の行に留まるため、pはソースの最初の行と2番目の行の間にコピーされた行を貼り付けます。行のブロックを複製するには、7yyP
Nefrubyr

@Nefrubyrまたは:.,.+7 copy .+7:P
DarkWiiPlayer 2018

23

yyp -後に貼り付け

yyP -前に貼り付け


6
行が複製されているため、コンテンツの最終結果は同じです。
Acumenus 2013年

4
@ABBただし、ここには小さな違いがあります-カーソルがどの行に位置するかです。
Mikk

12

私は好きです: Shift+ v(行全体をすぐに選択し、必要に応じて他の行を選択できるようにするため)、y、p


11

<Cx> <Cl>を試すこともできます。これにより、挿入モードの最後の行が繰り返され、すべての行を含む完了ウィンドウが表示されます。<Cp>とほぼ同じように機能します


これは非常に便利ですが、マスコミに、私はちょうどCTRL-Lにそれをマッピングしている多くのキーを避けるために、これは私のマップです:inoremap ^ L ^ X ^ L
ホルヘGajon

11

別のオプションは次のようにすることです:

nmap <C-d> mzyyp`z

カーソル位置を保持できるという利点があります。


10

viを知らない人にとって、上からのいくつかの回答は、「ペースト... 現在の行の後/前に」のようなフレーズで彼を誤解させるかもしれません。
実際には「貼り付け... カーソルの後/前に」です。

yyまたはY、行をコピーする
か 、行
ddを削除します

その後

pコピーまたは削除されたテキストを貼り付けた後にカーソル
または
Pコピーまたは削除されたテキストを貼り付ける前に、カーソル


その他のキー割り当てについては、次のサイトにアクセスしてください。vi完全なキー割り当てリスト


3

1つの落とし穴:あなたが行を置くために「P」を使用する場合、それはそれを置くの行にカーソルが上にある、あなたがライン君だヤンクした後に行を追加したいのであれば、ラインの下にカーソルを移動しないでください新しい行を置く前に。


4
または大文字のPを使用-前に置く
Ghoti 2016年

3

デフォルトはですがyyp、私はこのリバインディングを1年ほど使用しており、気に入っています。

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv


3

私はパーティーに遅れるのは分かっているが、何でも。これは私の.vimrcにあります:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

:copyコマンドは、選択された行または範囲(常に行全体)を、引数として指定された行番号の下にコピーするだけです。

通常モードでこれが行うことは、copy . この行をこの行のすぐ下にコピーすることです。

ビジュアルモードでは'<,'> copy '> 、選択の開始から選択の終了、選択の終了の下の行へのコピーに変わります。


1
↑↑ここでベストアンサー!

2

viの学習を始めた人のために、ここでは、viの典型的なWindows GUIエディターのカーソルの動きとショートカットキーにviコマンドを並べて一覧表示することにより、viの概要を紹介します。yy(コピー行)とp(後貼り付け)またはP(前貼り付け)を含むすべての基本的なコマンドが一覧表示されます。

Windowsユーザー向けのvi(Vim)


1

Sublime Ctrl+ Shift+ +のように、行を複製して現在のすぐ下にすぐに貼り付けDたい場合は、これを.vimrcファイルに追加できます。

nmap <S-C-d> <Esc>Yp

または、挿入モードの場合:

imap <S-C-d> <Esc>Ypa


ただし、これは挿入モードをi終了し、最後に追加して再入力すると中断しますundo。そのため、挿入モードで行を複製するソリューションは、見かけほど簡単ではありません。
DarkWiiPlayer

これは私にとっては完璧に機能します。imap <S-C-d> <Esc>Ypi 挿入モードと nmap <S-C-d> <Esc>Yp通常モード
jedi

0

私はこのマッピングを使いたいです:

:nnoremap yp Yp

ネイティブYPコマンドと一緒に使用することが一貫しているためです。

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