【问题标题】:Is there a one-liner to tell vim/ctags autocompletion to search from the middle of a word?是否有一种方法可以告诉 vim/ctags 自动完成从单词的中间进行搜索?
【发布时间】:2017-10-02 17:16:07
【问题描述】:

在 vim 中(在插入模式下,运行 exuberant ctags 之后),我使用 ctrl-x 后跟 ctrl-] 来显示各种可能的单词/标记的下拉列表。这是一个很棒的功能。

问题在于,默认情况下,此列表以一堆数字选项开头并自动插入第一个数字选项,如果我退格以摆脱数字并开始输入单词的一部分fresh - 与从单词中间搜索的想法——自动完成行为完全退出。

我知道我可以输入我想要的单词的第一个字母,然后从那里开始。但这假设我知道这个词的第一个字母,这不一定是给定的。

例如,如果我在一个长周末和朋友一起做一个结对编程项目,我可能在任何特定时刻都不记得他是否调用了他的方法promoteRecordStatus()、updateRecordStatus() 或boostRecordStatus()。在这个例子中,我想输入 RecordStatus 并得到相关的结果,这在当前的行为看来似乎是不可能的。

所以考虑到这种情况:是否有一种简单的 vim 原生方式告诉编辑器在没有任何假设的情况下开始自动完成,然后在每个标记的所有部分中搜索所有可用标记以查找我键入的字符串?

我当然会认为插件建议很有帮助,但我更喜欢简短的 vim 原生答案,如果可能的话不需要任何插件。理想情况下,可以只使用一两行来设置配置。

【问题讨论】:

    标签: vim ctags


    【解决方案1】:

    内置补全都需要在起始位置匹配。在某些情况下,您可以从 'iskeyword' 选项中删除分隔符(例如,在 Vimscript 中,删除 # 以便能够从 foo#bar#BazFunction() 完成单个组件),但这对于 camelCaseWords 根本不起作用。

    不过,自定义:help complete-functions 可以实现任何完成搜索。要基于标签数据库,它必须使用taglist() 作为源,并在触发补全之前根据输入的补全库进行过滤。如果您没有在开始时锚定此模式匹配,则您将获得所需的完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-31
      • 2011-11-26
      • 1970-01-01
      • 2016-01-19
      • 2014-08-26
      • 2010-09-14
      • 1970-01-01
      • 2011-10-19
      相关资源
      最近更新 更多