我用这种词添加了一个字典:
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