2017-09-30 32 views
0

在vim中(在插入模式下,在运行旺盛的ctags之后),我使用ctrl-x,然后是ctrl-]来调出各种可能的单词/标记的下拉列表。这是一个很棒的功能。是否有单行命令来告诉vim/ctags自动完成从单词中间搜索?

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

我知道我可以输入我想要的单词的第一个字母,然后从那里开始。但是,这假设我知道这个词的第一个字母,这不一定是给定的。例如,如果我在一个长周末期间与一位朋友一起进行一对编程项目,我可能不记得他是否在任何时候调用他的方法promoteRecordStatus(),updateRecordStatus()或boostRecordStatus() 。在这个例子中,我想输入RecordStatus并获得相关的结果,这与目前的行为看起来似乎不可能一目了然。

因此,与记住的场景:有一个简单,VIM原生的方式告诉编辑器没有任何假设,开始其自动完成,然后搜索所有可用的令牌我输入的字符串中的每个令牌的所有部分?

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

回答

0

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

自定义:help complete-functions可以实现任何完成搜索,但。要基于标签数据库,它将不得不使用taglist()作为源,并且根据在触发完成之前输入的完成基础进行过滤。如果你在开始时没有固定这种模式匹配,你可以完成你想要的任务。