我想创建一个函数opfunc
(由运算符挂起的映射调用的函数),用于在执行过程中的用户输入以获取参数。我的函数应该从文本动作中提取行范围(可以使用[
和]
标记完成),然后将用户放到命令行以输入参数(应该是可填充的,因为它在定义命令时),然后,在接收输入时,继续执行。我还将解决这种情况,即函数的最后一行将用户放到命令行上,并且提示符前面填充了可以接管执行的命令的名称(在用户输入参数之后)。我怎么能这样做?
答案 0 :(得分:2)
在:help g@
处启动opfunc示例,这里有一些可以帮助您入门的内容。这会将范围存储在脚本本地变量中,通过feedkeys()
触发命令行,然后使用可以获取范围的自定义命令完成。
nmap <silent> <F4> :set opfunc=MyOpfunc<CR>g@
function! MyOpfunc(type, ...)
let s:rangeStart = getpos("'[")
let s:rangeEnd = getpos("']")
call feedkeys(':MyCommand ', 't')
endfunction
function! MyCommand( arguments )
echomsg "MyCommand with" a:arguments "from" string(s:rangeStart) "to" string(s:rangeEnd)
endfunction
command! -nargs=+ MyCommand call MyCommand(<q-args>)
只需添加命令完成和实际功能。我也很想知道你想到的实际用例。