it-swarm-eu.dev

Dupliziere eine ganze Zeile in Vim

Wie dupliziere ich eine ganze Zeile in Vim auf ähnliche Weise wie Ctrl+D in IntelliJ IDEA/Resharper oder Ctrl+Alt+/ in Eclipse?

1492
sumek

yy oder Y um die Zeile zu kopieren
oder
dd die Linie löschen (ausschneiden)

dann

p um den kopierten oder gelöschten Text einzufügen nach die aktuelle Zeile
oder
P um den kopierten oder gelöschten Text einzufügen vor die aktuelle Zeile

2555
Mark Biek

Normalmodus: Siehe andere Antworten.

Der Ex Weg:

  • :t. wird die Zeile duplizieren,
  • :t 7 kopiert es nach Zeile 7,
  • :,+t0 kopiert die aktuelle und nächste Zeile am Anfang der Datei (,+ ist ein Synonym für den Bereich .,.+1).
  • :1,t$ kopiert Zeilen vom Anfang bis zur Cursorposition bis zum Ende (1, ist ein Synonym für den Bereich 1,.).

Wenn Sie verschieben müssen, anstatt zu kopieren, verwenden Sie :m anstelle von :t.

Dies kann sehr effektiv sein, wenn Sie es mit :g oder :v kombinieren: 

  • :v/foo/m$ verschiebt alle Zeilen, die nicht mit dem Muster "foo" übereinstimmen, an das Ende der Datei.
  • :+,$g/^\s*class\s\+\i\+/t. kopiert alle nachfolgenden Zeilen des Formulars class xxx direkt nach dem Cursor.

Referenz: :help range, :help :t, :help :g, :help :m und :help :v

375
Benoit

YP oder Yp oder yyp.

279
Linulin

copy and paste in vim

Einfacher geht es nicht! Vom normalen Modus:

yy

bewegen Sie sich dann zu der Zeile, in die Sie einfügen möchten

p
229
Adam

yy

ruckelt die aktuelle Zeile, ohne sie zu löschen

dd

löscht die aktuelle Zeile

p

wird put eine Zeile von einer der vorherigen Methoden gepackt

49
pjz

Mach das:

Zuerst, yy um die aktuelle Zeile zu kopieren, und dann p einfügen.

38
Eric Z Beard

Wenn du einen anderen Weg wünschst :-)

"ayy Dies speichert die Zeile im Puffer a

"ap Damit wird der Inhalt des Puffers a an den Cursor gesetzt.

Hier gibt es viele Variationen.

"a5yy speichert die 5 Zeilen im Puffer a

siehe http://www.vim.org/htmldoc/help.html für mehr Spaß

38
Kwondri

yyp - erinnere dich mit "yippee!"

Mehrere Zeilen mit einer Zahl dazwischen:

y7yp

37
theschmitzer

yyp - danach einfügen

yyP - vorher einfügen

22
yemu

Sie können auch <C-x> <C-l> versuchen, die die letzte Zeile des Einfügemodus wiederholt und Ihnen ein Abschlussfenster mit allen Zeilen anzeigt. Es funktioniert fast wie <C-p>

11
nikolavp

Eine weitere Option wäre, mit zu gehen:

nmap <C-d> mzyyp`z

bietet Ihnen den Vorteil, die Cursorposition zu erhalten.

11
Rook

Ich mag: Shift+v (um die gesamte Zeile sofort auszuwählen und andere Zeilen auswählen zu können, wenn Sie möchten), y, p

10
Gabe

Für jemanden, der vi nicht kennt, könnten einige Antworten von oben ihn mit Phrasen wie "Einfügen ... nach/vor" irreführen aktuelle Zeile".
Es ist eigentlich "Einfügen ... nach/vor mauszeiger".

yy oder Y um die Zeile zu kopieren
oder
dd um die Zeile zu löschen

dann

p um den kopierten oder gelöschten Text nach dem einzufügen mauszeiger
oder
P um den kopierten oder gelöschten Text vor dem einzufügen mauszeiger


Weitere Informationen zu Tastenkombinationen finden Sie auf dieser Website: vi Vollständige Liste der Tastenkombinationen

10
Michael

1 gotcha: Wenn Sie die Zeile mit "p" setzen, wird sie eingefügt - nach der Zeile, auf der sich der Cursor befindet. Wenn Sie also die Zeile nach der Zeile einfügen möchten, die Sie ziehen, bewegen Sie die Zeile nicht Cursor eine Zeile nach unten, bevor Sie die neue Zeile einfügen.

3
cori

Standard ist yyp, aber ich benutze dieses Rebinding seit ungefähr einem Jahr und liebe es:

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

2
Chris Penner

Für diejenigen, die mit dem Erlernen von vi beginnen, finden Sie hier eine gute Einführung in vi, indem Sie nebeneinander vi-Befehle für typische Cursorbewegungen und Tastenkombinationen des Windows-GUI-Editors auflisten. Es listet alle grundlegenden Befehle auf, einschließlich yy (Zeile kopieren) und p (Einfügen nach) oder P(vorher einfügen).

vi (Vim) für Windows Benutzer

1
ap-osd

Ich weiß, ich bin zu spät zur Party, aber wie auch immer; Ich habe das in meiner .vimrc:

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

der Befehl :copy kopiert nur die ausgewählte Zeile oder den Bereich (immer ganze Zeilen) unter die als Argument angegebene Zeilennummer.

Im Normalmodus copy .kopiere diese Zeile direkt unter diese Zeile.

Im visuellen Modus wird daraus '<,'> copy '>copy vom Start der Auswahl bis zum Ende der Auswahl bis zur Zeile unter dem Ende der Auswahl.

1
DarkWiiPlayer

Wenn Sie eine Zeile duplizieren und direkt unter der aktuellen Zeile einfügen möchten, wie in Sublime Ctrl+Shift+DDann können Sie dies zu Ihrer .vimrc-Datei hinzufügen.

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

0
jedi

Ich benutze dieses Mapping gerne:

:nnoremap yp Yp

denn es macht es konsistent, es zusammen mit dem nativen YP-Befehl zu verwenden.

0
yolenoyer