我目前正在使用 Tcl/Tk 进行编程。我有一些小部件.entry,stdin
,.entry,stdout
我正在使用超级选项卡用于自动完成。逗号在那里是因为我正在使用一个名为网格加这就是我访问标准 Tk 小部件功能的方式。
使用自动完成功能的想法是,当我键入.entry,
并按 Tab 键时,它将仅显示stdin
可能stdout
的答案。但是,当我这样做时,它会显示文件中所有可能的单词,而不仅仅是stdin
and stdout
。当我尝试时自动完成弹出和新复杂缓存之后它甚至不会弹出菜单.entry,
我猜 Vim 将 the 解释,
为单词分隔符,即使没有空格。当我尝试交换,
它时_
,它起作用了,因为我认为 Vim 将其解释为一个单词。我想这更多地与 Vim 对单词的解释有关,而不是插件问题。但是,我想知道是否可以改变这种行为?
答案1
更改iskeyword
选项以控制 Vim 如何决定单词是什么。对于你的情况,你可以添加一个逗号来告诉 Vim 你的单词也由逗号组成:
:set iskeyword+=,
它并不完美地满足您的需求,但我认为它比默认的更好。
:help iskeyword
当你在做的时候检查一下。
答案2
我想这更多地与 vim 对单词的解释有关,而不是插件的问题。
事实并非如此,因为编写插件的人大概知道他们在做什么,并且这种行为是有意的而不是偶然的。不幸的是,在这种情况下这对你没有好处。
内置完成(参见:help E535
和无所不包在维基中),也不会更好——我注意到它实际上使用逗号作为字典中事物的分隔符,所以如果你添加“this,what”,它将包括“this”和“what”的完成”,但不是“这个,什么”。 [但是,请参阅 Holygeek 的答案以获取解决方案]。
你想要的并不是不可能的——omnicppcomplete 插件将为 C++ 的“.”、“->”和“::”完成补全,那么为什么不为“,”完成补全呢?问题是很可能没有人单独写过这些行的任何内容......