function! s:PadMacro(type) abort
if a:type ==# 'char'
normal! `[v`]d
elseif a:type ==# 'line'
normal! '[V']d
elseif a:type ==# 'v'
normal! `<v`>d
else
return
endif
let string = '\Pad{' . @" . '}'
silent execute "normal! i\<c-r>=string\r"
endfunction
nnoremap <silent> ;P :set operatorfunc=<sid>PadMacro<cr>g@
vnoremap <silent> ;P :<c-u>call <sid>PadMacro(visualmode())<cr>
Nếu bạn đặt mã trước đó vào vimrc của mình, nó sẽ làm những gì bạn muốn.
Để sử dụng nó, nhấn ;P{motion}
và PadMacro()
chức năng nên kèm theo các nhân vật được bao phủ bởi {motion}
với \Pad{
và }
.
Ví dụ sử dụng:
;Pl
để đặt ký tự bên dưới con trỏ (vì l
là một chuyển động bao phủ ký tự dưới con trỏ)
;Piw
để đặt từ dưới con trỏ (vì iw
là một đối tượng văn bản bao gồm tất cả các ký tự bên trong từ bên dưới con trỏ)
;Pis
để đặt câu trong đó con trỏ là (vì is
là một đối tượng văn bản bao gồm tất cả các ký tự bên trong câu)
;P$
để bao quanh các ký tự giữa con trỏ của bạn và cuối dòng
;P
để bao quanh các nhân vật được lựa chọn trực quan
Tất cả mọi thứ được thực hiện bởi PadMacro()
chức năng này được coi là một phiên bản duy nhất có nghĩa là nó có thể lặp lại.
Nói cách khác, nếu bạn có một số phần văn bản tương tự để gửi kèm theo \Pad{}
thì không cần phải chạm vào ánh xạ mỗi lần, chỉ lần đầu tiên (sau đó bạn có thể nhấn .
để lặp lại phiên bản cuối cùng của mình).
Để biết danh sách đầy đủ các đối tượng văn bản mà bạn có thể áp dụng bao vây của mình, hãy xem :
:help text-objects
.