有没有人知道是否可以创建一个新的op-pending命令?
e.g。我想将vf(r<space>w
等序列替换为,cf(
。具体来说,这个想法是从光标位置“清除”文本直到包括下一个开括号,然后将光标放在下一个单词的开头。
我可能只是在帮助文件中丢失了某些内容(或者我的Google-fu今天已关闭),因此非常感谢指向正确位置的指针。
答案 0 :(得分:4)
您想使用:set opfunc
和g@
。文档非常好,:h g@
。
nnoremap <silent> ,c :set opfunc=Clearing<cr>g@
vnoremap <silent> ,c :<c-u>set opfunc=Clearing<cr>g@
function! Clearing(type, ...)
let sel_save = &selection
let &selection = "inclusive"
let reg_save = @@
if a:0 " Invoked from Visual mode, use '< and '> marks.
silent exe "normal! `<" . a:type . "`>r "
elseif a:type == 'line'
silent exe "normal! '[V']r "
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]r "
else
silent exe "normal! `[v`]r "
endif
norm! `]w
let &selection = sel_save
let @@ = reg_save
endfunction
答案 1 :(得分:3)
我认为:h map-operator正是您所寻找的。 p>