Theo mặc định, các lệnh dán sử dụng thanh ghi "
(không tên là tên) . Thực tế, bất kỳ lệnh nào ghi vào thanh ghi cũng ghi vào thanh ghi không tên, do đó, yanks, xóa và thay đổi đều ảnh hưởng đến nó. Đây là lý do tại sao trình tự yank-xóa-dán của bạn dán văn bản đã xóa thay vì văn bản được kéo dài.
Việc 0
đăng ký có thể giúp đỡ ở đây. Bất kỳ lệnh yank nào không chỉ định một thanh ghi đều đặt văn bản được kéo vào thanh ghi 0
(ngoài "
). Nó không bị ảnh hưởng bởi việc xóa hoặc thay đổi các hoạt động, vì vậy bạn có thể sử dụng nó để dán một dòng có nhiều lần ngay cả khi bạn thực hiện xóa hoặc thay đổi trung gian.
yy
: Các thanh ghi 0
và "
cả hai đều có dòng kéo dài.
- Di chuyển đến một dòng để thay thế.
dd
: Đăng ký "
bây giờ có dòng bị xóa, nhưng đăng ký 0
vẫn có dòng yank.
"0P
: Dán dòng yanks ban đầu từ thanh ghi 0
.
- Di chuyển đến dòng tiếp theo để thay thế.
dd"0P
(giống như trên)
(Do cách định vị con trỏ hoạt động khi thay thế dòng cuối cùng của bộ đệm, bạn sẽ muốn sử dụng "0p
thay vì "0P
.)
Điều này rất gần với câu trả lời của Bruce Ediger , ngoại trừ việc bạn không phải chỉ định đăng ký khi ban đầu kéo dài. Sử dụng một hoặc nhiều thanh ghi có tên có thể rất tiện dụng mặc dù nếu bạn cần (ví dụ) thay thế một số dòng bằng AAA
, nhưng các dòng khác bằng BBB
(đưa AAA
vào thanh ghi a
và BBB
đăng ký b
(hoặc để lại một trong số chúng trong thanh ghi 0
), sau đó dán chúng cho phù hợp ).
Bạn cũng có thể dán từ 0
chế độ hình ảnh trực quan ( V
) để lưu tổ hợp phím : V"0p
.
Nếu bạn không thích phải gõ "0
, bạn có thể thấy ánh xạ thuận tiện hơn:
noremap <Leader>p "0p
noremap <Leader>P "0P
vnoremap <Leader>p "0p
Một cách tiếp cận khác là xóa _
sổ đăng ký ( . Khi bạn xóa nó, thanh "
ghi không bị ảnh hưởng, vì vậy trình tự yank-xóa-dán của bạn vẫn có thể dán văn bản được kéo dài từ thanh ghi không tên.
yy
: Đăng ký 0
và "
cả hai bây giờ có dòng kéo dài.
"_dd
: Không thay đổi các thanh ghi.
P
: Dán văn bản được kéo mạnh ban đầu từ thanh ghi "
.
Một lần nữa, bạn có thể tìm thấy một ánh xạ thuận tiện hơn:
noremap <Leader>d "_d
yy
(di chuyển đến dòng để được thay thế)S<C-r>0<Esc>
. Có lợi thế là có thể lặp lại với.
lệnh.