Di Vim, bagaimana saya bisa menyalin dari beberapa baris? (bukan rentang);

20

Anggap saya punya

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

bagaimana cara menyalin baris 1 dan 3 (bukan rentang baris) dan menempelkannya, misalnya di baris 8? Jika saya melakukan ini dengan |arg seperti ( 1y|3y), saya akan menarik garis ke beberapa register, kan? Tetapi bagaimana saya bisa memasukkan dari beberapa register sekaligus?

Apa nama saya
sumber

Jawaban:

33

Anda dapat menambahkan ke register alih-alih menghapusnya dengan menggunakan huruf besar dan bukan huruf kecil.

Sebagai contoh:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a
lororget
sumber
1
Anda juga dapat melakukan ini dalam mode normal dengan "ayyjj"Ayy"ap.
wchargin
5
(atau 1G"ayy3G"Ayy8G"apuntuk nomor baris yang jelas)
wchargin
1
Bukan hanya Guntuk pergi ke jalur, bukan <C-G>?
David
1
Ini sangat keren. Anda dapat terus menambahkan banyak hal ke buffer yang AAnda inginkan dan itu akan menyimpan semuanya. Untuk memulai lagi, masukkan sesuatu ke dalam registera
CornSmith
1
@CornSmith Nitpick: buffer adalah istilah yang sangat spesifik dalam konteks vim. "aadalah sebuah register .
Gagang pintu
1

Anda dapat menggunakan :copyperintah, yang dapat disingkat sebagai :t:

:1t8
:3t8

Jika Anda ingin menyalin berbagai baris (mis. Semua baris dari 1 hingga 3) Anda dapat melakukannya seperti ini:

:1,3t8
Roberto Bonvallet
sumber
Saya ingin menyalin baris dengan nomor, tetapi bukan RANGE OF LINES ... Dapatkah saya dengan sesuatu seperti perintah t append to line?
Whats Myname
0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9
sjsam
sumber
Ini dapat diekspresikan lebih baik dengan :tperintah, yang juga tidak menghapus "atau 0mendaftar.
Gagang pintu