gpt4 book ai didi

vim - 如何向 VIM 添加自定义动词?

转载 作者:行者123 更新时间:2023-12-02 23:21:24 25 4
gpt4 key购买 nike

我想为 vim 定义一个新动词(比如“o”),它可以对任何现有的 vim 文本对象进行操作。有关如何执行此操作的任何指示吗?

谢谢AB

最佳答案

这些动词称为运算符(请参阅:h 运算符)。如果您想构建自己的运算符,则必须使用 'operatorfunc' 设置,然后执行 g@。 vim 文档很好地解释了如何执行此操作,请参阅 (:h :map-operator) 以下是 vim 文档中的示例:

nmap <silent> <F4> :set opfunc=CountSpaces<CR>g@
vmap <silent> <F4> :<C-U>call CountSpaces(visualmode(), 1)<CR>

function! CountSpaces(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 . "`>y"
elseif a:type == 'line'
silent exe "normal! '[V']y"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]y"
else
silent exe "normal! `[v`]y"
endif

echomsg strlen(substitute(@@, '[^ ]', '', 'g'))

let &selection = sel_save
let @@ = reg_save
endfunction

如果您想要另一个示例,请查看 Tim Pope 的 commentary plugin .

获取更多帮助

:h operator
:h :map-operator
:h 'opfunc'
:h g@

关于vim - 如何向 VIM 添加自定义动词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11937363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com