vim文件某些区域的自动完成限制

时间:2014-07-29 10:19:23

标签: python autocomplete vim

假设我们有一个像这样的xml文件:

<tag1>
somthing here
</tag1>
<tag2>
somthing here
</tag2>
<region>
autocomplete here
</region>

每当光标位于region标签内时,我希望自动完成c-nc-x c-l仅限于某些客户选项,例如:

c-n

myword1, myword2, myword3, myword4

c-x c-l

myline1
myline2
myline3
myline4

有可能吗?

python中的解决方案将是首选。

1 个答案:

答案 0 :(得分:1)

是的,自定义完成功能可以做到这一点。

取决于位置的固定值

Vim对一组固定单词cp有字典完成:help i_CTRL-X_CTRL-K。要根据位置配置不同的集,:autocmd CursorMoved,CursorMovedI可能会更改基础'dictionary'选项。

或者,您可以编写自定义完成功能,如CompleteMonths()下的:help complete-functions示例。

动态值取决于Vim范围

我的CompleteHelper plugin使编写自定义完成变得非常容易。对于像\%l这样的正则表达式原子,您可以限制找到匹配项的范围。插件页面包含指向用它编写的几个自定义完成的链接。

动态值取决于XML结构

要仅从某些XML标记获取匹配项,我们将从一般文本编辑转移到类似IDE的功能。您可能需要一个外部XML解析器(因为通过正则表达式解析XML是not possible),但是可以遵循上面给出的自定义完成函数的配方。

相关问题