Câu trả lời:
Sử dụng một thanh ghi chữ hoa khi kéo (sao chép):
"Ay
"Anói để nối vào thanh aghi, trái với "ađiều đó sẽ thay thế nội dung của thanh aghi.
Khi bạn đã sao chép mọi thứ vào sổ đăng ký, bạn có thể dán tất cả cùng một lúc với:
"ap
qaq. Ngoài ra, nếu bạn chỉ muốn tránh có rác trước đó, bạn có thể sao chép từ đầu tiên của mình bằng cách sử dụng thanh ghi chữ thường : "ay. Hãy nhớ avà Atham khảo cùng một thanh ghi, chúng chỉ ảnh hưởng đến cách mọi thứ được thêm vào.
Bạn cũng có thể xác định toán tử tùy chỉnh của riêng mình, nó sẽ tăng dần bất kỳ đối tượng văn bản hoặc văn bản nào được bao phủ bởi một chuyển động:
fu! Incremental_yank(type, ...) abort
if a:type ==# 'char'
norm! `[v`]y
elseif a:type ==# 'line'
norm! '[V']y
elseif a:0
norm! gvy
endif
call setreg('z', @".(a:type ==# 'char' ? ' ' : ''), 'a' . getregtype('"'))
call setreg('"', @z, getregtype('z'))
endfu
nno <silent> zy :<C-U>set opfunc=Incremental_yank<CR>g@
xno <silent> zy :<C-U>call Incremental_yank(visualmode(), 1)<CR>
nno <silent> zyy :<C-U>set opfunc=Incremental_yank<Bar>exe 'norm! '.v:count1.'g@_'<CR>
nno <silent> zyc :<C-U>let [@", @z] = ['', '']<CR>p
Trong ví dụ này, 4 ràng buộc chính được cài đặt:
zy Toán tử bình thường để tăng dần một đối tượng văn bản hoặc chuyển độngzyy toán tử tương tự hoạt động trên các dòngzy toán tử tương tự hoạt động trên lựa chọn trực quanzyclệnh bình thường để làm trống các thanh ghi "và z; hữu ích trước khi bắt đầu kéo dài một chuỗi các văn bảnVới nó, bạn có thể:
zyiwvào từ đầu tiên, sau đó lặp lại thao tác với lệnh dot trên những từ tiếp theozyyvào cái đầu tiên, sau đó lặp lại thao tác với lệnh dot trên những dòng tiếp theozyvào từng lựa chọnMã hiện tại sẽ khóa zthanh ghi, nếu bạn thích sử dụng một thanh ghi khác, xví dụ như, bạn có thể thay đổi các dòng sau:
call setreg('z', @", 'a' . getregtype('"')) call setreg('x', @", 'a' . getregtype('"'))
^ ^
call setreg('"', @z, getregtype('z')) → call setreg('"', @x, getregtype('x'))
^ ^ ^ ^
nno <silent> zyc :<C-U>let [@", @z] = ['', '']<CR>p nno <silent> zyc :<C-U>let [@", @x] = ['', '']<CR>p
^ ^
Để biết thêm thông tin, xem:
:h g@
:h getregtype()
:h setreg()
/^#\s.\+và sau đó làm zyvví dụ!