Tại sao p dán một dòng sao chép sau dòng hiện tại, thay vì sau từ hiện tại?


12

Giả sử tôi có bốn dòng sau:

line1
line2
line3
line4

Bây giờ nếu tôi đi đến line1và thực hiện một yybản sao dòng đó và sau đó bắt đầu line3và thực hiện dán bằng 'p', tôi sẽ nhận được

...
line3
line1
line4
....

Tại sao nó dán line1sau line3trong một dòng mới?

Mặc dù ban đầu của tôi là bởi vì ký tự dòng mới $ được gắn vào dòng3 và khi tôi nhấn pvim được coi line3$là một từ để nó được dán sau đó line3$. Tuy nhiên có vẻ như sự hiểu biết của tôi đã sai. Bởi vì nếu tôi làm điều này line3 $và sau đó làm một pở đầu dòng tôi sẽ nhận được kết quả tương tự.

Tại sao ptạo một dòng mới và dán vào một dòng mới sau line3?

Câu trả lời:


20

Khi bạn xóa dòng sử dụng dd, bạn thực hiện một linewise xóa.

Các plệnh dán sau vị trí con trỏ. Vì thanh ghi mặc định được điền với nội dung theo dòng, điều đó có nghĩa là nó sẽ dán sau khi con trỏ được bật.

Thay vào đó, nếu bạn đã xóa nội dung của dòng theo cách đặc trưng (ví dụ 0D:), thì thanh ghi sẽ có đặc tính và do đó được dán sau ký tự con trỏ được bật.

Nói chung, hành vi nên tuân theo những gì được mong đợi từ xóa / yank và dán. Tuy nhiên, có thể sửa đổi tính -wisechất của một thanh ghi bằng cách sử dụng getreg () / setreg () .

Hãy cẩn thận làm điều đó, mặc dù. Cho ví dụ ban đầu của bạn, chỉ cần thay đổi thanh ghi thành đặc trưng sẽ không xóa dòng mới là một phần của việc xóa. Nó chỉ thay đổi cách dán xảy ra.


Đối với các khuyến nghị về kịch bản cụ thể của việc xóa toàn bộ một dòng nhưng dán nó một cách đặc trưng, ​​xem bài đăng này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.