Duplizieren Sie eine ganze Zeile in Vim
-
09-06-2019 - |
Frage
Wie kann ich duplizieren eine ganze Zeile in Vim in ähnlicher Weise wie Strg + D in IntelliJ IDEA / ReSharper oder Strg + < kbd> Alt + ↑ / ↓ in Eclipse?
Lösung
y y oder Y , um die Zeile zu kopieren
oder in
d d (Schneiden) die Zeile löschen
dann
p die kopiert oder gelöscht Text einfügen nach der aktuellen Zeile
oder in
P die kopiert oder gelöscht Text vor die aktuelle Zeile
Andere Tipps
Normal-Modus: siehe andere Antworten
.Die Ex Art und Weise:
-
:t.
wird die Zeile duplizieren, -
:t 7
kopiert es nach Zeile 7 -
:,+t0
kopiert aktuelle und die nächste Zeile am Anfang der Datei (,+
ist ein Synonym für den Bereich.,.+1
) -
:1,t$
wird Linien von Anfang bis Cursor-Position bis zum Ende kopieren (1,
ist ein Synonym für den Bereich1,.
).
Wenn Sie anstelle des Kopierens zu bewegen, verwenden Sie :m
statt :t
.
Das kann wirklich mächtig sein, wenn Sie es mit :g
oder :v
kombinieren:
-
:v/foo/m$
werden alle Linien bewegen sich nicht um das Muster „foo“ an das Ende der Datei entspricht. -
:+,$g/^\s*class\s\+\i\+/t.
werden alle nachfolgenden Zeilen der Formclass xxx
rechts hinter dem Cursor kopieren.
Referenz: :help range
, :help :t
, :help :g
, :help :m
und :help :v
YP
oder Yp
oder yyp
.
Hat nicht einfacher als das! Vom Normalbetrieb:
yy
dann auf die Linie bewegen Sie und einfügen möchten
p
y y
wird die aktuelle Zeile zerren ohne sie löschen
d d
wird die aktuelle Zeile löschen
p
wird eine Linie durch eine der vorherigen Methoden packte put
Wenn Sie eine andere Art und Weise: -)
"ayy
dies wird die Linie in Puffer a
speichern
"ap
Dadurch wird der Inhalt des Puffers a
an der Cursorposition setzen.
Es gibt viele Variationen zu diesem Thema.
"a5yy
diese speichert die 5 Zeilen in Puffer a
finden Sie unter http://www.vim.org/htmldoc/help.html für mehr Spaß
Tun Sie dies:
Zuerst y y die aktuelle Zeile kopieren und dann p einzufügen.
y y p - "yippee" erinnern sie mit
Mehrere Zeilen mit einer Zahl zwischen:
y 7 y p
y y p - Einfügen nach
y y P - Einfügen vor
Sie können auch versuchen
Eine andere Möglichkeit wäre, mit zu gehen:
nmap <C-d> mzyyp`z
gibt Ihnen den Vorteil, dass die Cursorposition zu erhalten.
Für jemanden, der nicht vi kennt, einige Antworten von oben könnte verleiten ihn mit Phrasen wie "Paste ... nach / vor aktuelle Zeile ".
Es ist eigentlich "Paste ... nach / vor Cursor ".
y y oder Y , um die Zeile zu kopieren
oder in
d d die Zeile
dann
p die kopiert oder gelöscht Text einfügen nach Cursor
oder in
P die kopiert oder gelöscht Text vor Cursor
Weitere Tastenbelegungen können Sie diese Website besuchen: vi Key Binding Liste vollständig
Ich mag: Umschalttaste + v (die ganze Zeile auswählen sofort und lassen Sie andere Linien wählen, wenn Sie möchten), y, p
1 Gotcha: Wenn Sie „p“ verwenden, um die Linie zu setzen, sie setzt es nach die Zeile Sie den Cursor auf, also, wenn Sie die Zeile nach der Zeile hinzufügen möchten Sie zerren nicht den Cursor eine Zeile nach unten zu verschieben, bevor die neuen Zeile setzen.
Der Standardwert ist y y p , aber ich habe ein Jahr lang diese erneute Bindung wurde unter Verwendung von oder so und lieben es:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
Ich weiß, ich bin spät zur Party, aber was auch immer; Ich habe dies in meinem .vimrc:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
der :copy
Befehl nur kopiert die ausgewählte Linie oder den Bereich (immer ganze Zeilen) unter der Zeilennummer als Argument angegeben.
Im normalen Modus, was das bedeutet ist copy .
kopieren Sie diese Zeile direkt unterhalb dieser Zeile .
Und im visuellen Modus verwandelt es in '<,'> copy '>
Kopieren von Beginn der Auswahl der Auswahl der Zeile unter Ende der Auswahl zu beenden .
Für die Start-vi zu lernen, hier ist eine gute Einführung von bis vi Seite Auflistung von Seite vi Befehlen typische Windows-GUI-Editor Cursor-Bewegung und Shortcut-Tasten. Es listet alle grundlegenden Befehle einschließlich yy (Kopie Linie) und p (Paste nach) oder P (Paste vor).
Wenn Sie möchten, eine Zeile kopieren und fügen Sie ihn direkt unter dem aktuellen wie, genau wie in Sublime Strg + Umschalttaste + D , dann können Sie diese in Ihrer .vimrc
Datei hinzufügen.
imap <S-C-d> <Esc>Yp
Ich mag diese Zuordnung verwenden:
:nnoremap yp Yp
, weil sie es konsequent machen neben dem nativen YP
Befehl zu verwenden.