Kopieren von der aktuellen Position bis zum Zeilenende in vi

101

Ich benutze gvim in Windows. So kopieren Sie Text von der aktuellen Position bis zum Zeilenende in vi und fügen ihn in eine andere in vi geöffnete Datei ein. Ich habe es gegoogelt, kann aber keine Lösung dafür finden. Schätzen Sie jede Hilfe dazu. Danke dir.

Javalearner
quelle

Antworten:

154

Der Normalmodus-Befehl zum Verschieben an das Zeilenende lautet $.

Sie können bis zum Ende der Zeile mit kopieren y$und mit einfügen p.

Zum Kopieren / Einfügen zwischen verschiedenen Instanzen können Sie die Systemzwischenablage verwenden, indem Sie das *Register auswählen , sodass die Befehle zum "*y$Kopieren und"*p Einfügen verwendet werden.

$ Move-to-Linebreak

$

y$ Yank-to-Linebreak

y,$

"*y$ Wählen Sie Zwischenablage-Register Yank-to-Linebreak

", *, y,$

"*p Wählen Sie Zwischenablage-Register einfügen

", *,p

Überprüfen Sie :h registersfür weitere Informationen.

Don Reba
quelle
Vielen Dank. aber ich möchte den Inhalt in 'eine andere Datei' einfügen, die in vi geöffnet ist. Dies funktioniert nur mit derselben Datei.
Javalearner
4
Es funktioniert für alle Dateien, die in derselben Instanz geöffnet sind. Sie können in die Systemzwischenablage kopieren, indem Sie das Register *(oder +) auswählen .
Don Reba
Warum die Systemregister kann nicht funktionieren ... Ich kann nicht kopieren Sie den Kontext , in file1zu file2. Ich muss noch die Maus benutzen. Was könnte der Grund wahrscheinlich sein?
Alston
8
Normalerweise Dschneide ich von der aktuellen Position bis zum Ende und pfüge die Originaldaten ein (stelle sie wieder her) und gehe dann an eine andere Stelle, um die gezogenen Daten einzufügen. Einfach weil es viel einfacher zu tippen ist Dals y$.
Neevek
1
@PhilipRego, es ist y$ohne Semikolon.
Don Reba
45

Wenn Sie den Zeilenumbruch nicht in den Ruck einfügen möchten, können Sie ihn verwenden yg_. (Oder in Ihrem Fall,"*yg_ )

Erkennen Sie einfach, dass es einen Unterschied zwischen $und in g_Bezug auf die Bewegung gibt. Es hat mir bei zahlreichen Gelegenheiten geholfen.

kenny
quelle
3
Gibt es sowieso zu tauschen g_und $? Ich finde mich selten, wenn überhaupt, gezwungen, den Zeilenumbruch in Bewegungen einzubeziehen.
Jonathan Dumaine
1
JA! Die zusätzliche Newline macht mich verrückt. Dies sind die benötigten Informationen.
Javadba
6
@ JonathanDumaine in Ihrem $MYVIMRCfügen Sie die Zeile hinzunmap $ g_
thedanotto
@ thedanotto Sie schöne Person
Jonathan Dumaine
9

Fügen Sie diese Zeile Ihrer .vimrc hinzu

" Make Y yank till end of line
nnoremap Y y$

Mehr bei meinem vimrc .

Andy Ray
quelle
3

Eine andere Lösung: Dpund mit einfügen p. Tatsächlich wird dies zuerst bis zum Ende der Zeile gelöscht und an derselben Stelle erneut eingefügt. Fügen Sie es woanders ein p.

Daniel Porumbel
quelle
1
Warum nicht Du und die Datei unverändert lassen? (Anmerkung: dies schließt neue Linie ein)
Gen