我用这种词添加了一个字典:
foo.bar
this.is.a.test
尽管有点,我还是:set iskeyword+=.完成了工作:
当我输入fo<TAB>-->foo.bar
但我也希望有这样的完成:
test<TAB>-->this.is.a.test
我的意思是,我不会总是输入单词的开头。
我希望我很清楚
提前致谢
我用这种词添加了一个字典:
foo.bar
this.is.a.test
尽管有点,我还是:set iskeyword+=.完成了工作:
当我输入fo<TAB>-->foo.bar
但我也希望有这样的完成:
test<TAB>-->this.is.a.test
我的意思是,我不会总是输入单词的开头。
我希望我很清楚
提前致谢
使用插入模式的<c-x><c-p>after <c-p>/<c-n>您可以完成上一个完成之后的单词。这假设单词一起出现在前面。这意味着您不需要添加.到'iskeyword'(最好不要添加!)。
至于通过@Ingo Karkat 建议的自定义完成可能最好通过单词结尾完成。但是,我个人还没有遇到过需要这样的完成。
<c-x><c-p>以下<c-p>/<c-n>test在示例中<c-p>开始完成并打开完成菜单<c-n>通过或<c-p>(可选)找到正确的完成<c-x><c-p>以完成下一个单词,例如.is在示例中<c-n>通过或<c-p>(可选)找到正确的完成<c-x><c-p>和<c-p>/<c-n>步骤所以所有在一起:test<c-p><c-x><c-p><c-x><c-p><c-x><c-p>将产生this.is.a.test。
使用<c-x><c-p>起来很难解释,但尝试几次后更容易理解。相信我,这是值得的。你也可以用整行完成来做类似的技巧,即<c-x><c-l>. 帮自己一个忙,只要阅读:h ins-completion你们所有人都会变得更好。
<tab>用于完成Vim 提供了多种补全选项。<c-x><c-l>例如通过, tags: <c-x><c-]>, filename:等完成整行<c-x><c-f>。通常使用像SuperTab<tab>之类的巧妙映射或插件来完成会隐藏这些其他完成模式,让它们感觉不那么熟悉。注意:SuperTab 因引起冲突或不良行为而臭名昭著。
如需更多帮助,请参阅:
:h i_ctrl-x_ctrl-p
:h ins-completion
:h 'complete'
:h 'completeopt'
内置完成总是提供以完成基础开始的匹配。但是,您可以编写实现不同策略的自定义完成。
如果您的字典是加载缓冲区(不是内置字典完成:help i_CTRL-X_CTRL-K),我的CompleteHelper 插件可以更轻松地实现匹配项的提取。有了它,BidiComplete 插件提供了一些相关的东西:当this.is.a.test光标在. (我的作品中还有一个 MiddleEndComplete 插件,可能接近你想要的。)|test