gpt4 book ai didi

vim - 将 映射名称括起来的原因是什么?

转载 作者:行者123 更新时间:2023-12-03 14:47:07 26 4
gpt4 key购买 nike

许多插件通过 <Plug> 访问其公共(public)映射界面。 map 。然后,用户可以将这些映射用作自己映射的 Hook ,例如:nmap <Leader>fu <Plug>fooPluginUnlinkRootDir .

最近我遇到了一些将 map 名称放在括号中的插件,例如

  • <Plug>(textobj-indent-a)textobj-indent插件,
  • <Plug>(LineJugglerBlankUp)LineJuggler插入。

  • 这个语法没有记录在帮助文件的任何地方,也没有任何捆绑的 Vim 运行时文件使用它。尽管如此,这些插件还是可以很好地完成它们的工作。

    括号的动机是什么?使用它们有什么好处吗?是否应该鼓励插件作者遵循这种做法(作为最佳做法)?

    最佳答案

    谢谢ZyX;您的回答已经涵盖了基础知识,所以让我补充一下为什么我采用了 <Plug>(PluginNameAndMore)符号。 (我想我是在夏野假名的插件中第一次看到它的。)

    两个原因:

  • 当用其他东西包装映射时,更容易直观地解析各个映射目标,如下所示:
    imap <C-x><C-c> <Plug>(CompleteStart)<Plug>(CamelCaseComplete)<SID>(CamelCaseCompleteModifyUndo)<Plug>(CamelCasePostComplete)<Plug>(CompleteoptLongestSelect)
  • 在为一个插件定义多个映射时,必须注意其中一个的 LHS 不包含在另一个映射中。否则,触发映射时会有延迟,因为 Vim 需要等待额外的击键才能解决歧义。右括号可防止任何此类歧义。

  • BAD                 GOOD
    <Plug>MyFunc <Plug>MyFuncNext, <Plug>(MyFunc)
    <Plug>MyFuncReverse <Plug>MyFuncPrev, <Plug>(MyFuncReverse)

    关于vim - 将 <Plug> 映射名称括起来的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13688022/

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