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?

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

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

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

Ini dapat diekspresikan lebih baik dengan :tperintah, yang juga tidak menghapus "atau 0mendaftar.
Gagang pintu
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.