我用这样的词添加了一个词典:
foo.bar
this.is.a.test
我做:set iskeyword+=.
尽管有点完成工作:
当我输入fo<TAB>
- &gt; foo.bar
但我想也有这样的完成:
test<TAB>
- &gt; this.is.a.test
我的意思是,我不会一直打字。
我希望我很清楚
提前致谢
答案 0 :(得分:1)
使用<c-x><c-p>
/ <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>
,标记:<c-x><c-]>
,文件名:<c-x><c-f>
等。通常使用聪明的<tab>
映射或类似SuperTab的插件来完成隐藏这些其他完成模式,使他们感觉不那么熟悉。注意:SuperTab因引发冲突或不良行为而臭名昭着。
如需更多帮助,请参阅:
:h i_ctrl-x_ctrl-p
:h ins-completion
:h 'complete'
:h 'completeopt'
答案 1 :(得分:0)
内置完成程序始终提供 start 与完成基础的匹配。但是,您可以编写实现不同策略的自定义完成。
如果你的字典是一个加载的缓冲区(不是内置的字典完成:help i_CTRL-X_CTRL-K
),我的CompleteHelper plugin可以更容易地实现匹配的提取。有了它,BidiComplete plugin提供了相关的内容:当光标到this.is.a.test
的 left 时,|test
完成。 (我的作品中还有一个MiddleEndComplete插件,可能与你想要的一样。)