Kết quả của việc nhấn P
và p
tùy thuộc vào những gì bạn có trong sổ đăng ký đã chọn tại thời điểm đó. Nếu bạn xóa hoặc yank một hoặc nhiều dòng (ví dụ: với các lệnh dd
, Y
hoặc Vd
), thì nhấn P
sẽ chèn nội dung của thanh ghi của bạn trên dòng phía trên dòng hiện tại, trong khi p
sẽ chèn vào dòng bên dưới con trỏ.
Nếu bạn xóa hoặc yank một phần của văn bản dưới một dòng (ví dụ với D
, hoặc yw
lệnh), sau đó P
sẽ chèn nội dung của đăng ký của bạn trực tiếp trước vị trí con trỏ hiện tại, và p
sẽ chèn trực tiếp sau khi con trỏ (tức là trên cùng một dòng).
Nếu hữu ích, bạn có thể xem xét các lựa chọn linewise như là tương tự như khối yếu tố html (như <div>
), và lựa chọn characterwise như là tương tự như inline yếu tố html (như span
).
Vì vậy, để trả lời câu hỏi của bạn: nó phụ thuộc. Giả sử bạn có một phần dòng văn bản trong thanh ghi, bạn sẽ muốn chia thẻ mục tiêu thành hai dòng trước khi thực hiện thao tác dán. Trong ví dụ của bạn, thay vì làm dit
để xóa nội dung của thẻ, hãy cit
để xóa cùng một phần và chuyển sang chế độ chèn. Nhấn return
một lần, để chèn một dòng mới, sau đó esc
để quay lại chế độ thông thường, sau đó P
để chèn thanh ghi hàng của bạn trên đường thẳng với thẻ đóng.
Nếu bạn không muốn chia thẻ thành nhiều dòng, bạn sẽ phải đảm bảo rằng bạn đã kéo mạnh một lựa chọn theo ký tự vào thanh ghi. Sau đó, bạn có thể chạy:
"_ditP
"_
xóa văn bản vào lỗ đen đăng ký, đảm bảo nó không ghi đè lên những gì có trong đăng ký mặc định của bạn. dit
xóa nội dung của thẻ và P
dán nội dung của thanh ghi mặc định của bạn trước vị trí con trỏ.
Chữ thường 'p' đặt văn bản sau con trỏ, chữ hoa' P' đặt văn bản trước con trỏ. Bạn đã di chuyển con trỏ trước khi đặt văn bản chưa? http://vimdoc.sourceforge.net/htmldoc/change.html#put –