我已经创建了一些这样的映射:

:nnoremap <buffer> <leader>xyzABC   :call SomeFunc('ABC')<CR>
:nnoremap <buffer> <leader>xyzDE    :call SomeFunc('DE')<CR>
:nnoremap <buffer> <leader>xyzFoo18 :call SomeFunc('Foo18')<CR>
:nnoremap <buffer> <leader>xyzBar22 :call SomeFunc('Bar22')<CR>


可以按需工作。

我现在正在寻找创建地图的可能性-template,它将允许我删除映射中明显的多余部分,例如

:nnoremap <buffer> <leader> xyz? :call SomeFunc(?)<CR>


,以便我可以将任何值作为参数传递给SomeFunc

有这种可能性吗?

评论

您可以使用input()或getchar()。但是,对于带有参数的内容,使用命令而不是映射可能更正常。

我同意彼得的评论。命令比映射更适合工作。

#1 楼

就像@ peter-rinckler所说的那样,使用命令可能更容易做到: br />
command! -nargs=* Xyz :call SomeFunc(<q-args>)


我不太喜欢input(),因为您不能轻易重复这种事情。

#2 楼

感谢Peter Rincker的评论,我找到了答案:

:nnoremap <buffer> <leader> xyz :call SomeFunc(input('Param: '))<CR>


评论


这是另一个示例:nnoremap tn:exe“ tabn” nr2char(getchar())。这个想法是键入 tn2导航到选项卡2。

–贾莎
19年5月6日在21:13



#3 楼

您可能想看看SnipMate,它旨在为Vim提供类似于TextMate的代码片段。事实证明,这对我很有帮助。