【发布时间】:2011-12-08 23:28:36
【问题描述】:
vim 帮助文件中没有列出一个完成类型(特别是:insert.txt),但我本能地觉得经常需要它。假设我的文件中有“Awesome”和“SuperCrazyAwesome”这两个词。我找到了一个 Awesome 的实例,应该是 SuperCrazyAwesome,所以我跳到单词的开头,进入插入模式,然后必须输入“SuperCrazy”。
我觉得我应该能够键入“S”,创建“SCrazy”,然后只需点击一个或两个完成热键,让它找到光标左边的内容(“S”),右边的内容(“Crazy”),对文件中的所有单词进行正则表达式(“/S\w*Crazy/”),并为我提供一个选择的完成弹出菜单,或者如果只有一个匹配项,则只进行替换。
我想为此使用实际的完成系统。存在一个使用函数的“用户定义”完成,并且在从给定列表中替换的帮助中有一个很好的例子。但是,我似乎无法找到实现这一目标所需的许多细节,包括:
- 如何从 vim 函数中获取文件中所有单词的列表?
- 我可以像 vim 的完整一样列出所有缓冲区中的单词(带有文件名)吗?
- 如何在插入模式下获取光标之前/之后单词中的文本?
- 补全是否可以替换整个单词,而不仅仅是光标?
我已经在这里呆了几个小时了。我一直在死胡同,比如this one,它向我介绍了 \%# 以匹配光标位置,这似乎对我不起作用。例如,搜索 \w*\%# 只返回我所在单词的第一个字符,而不管我在其中的哪个位置。 \%# 似乎没有锚定。
【问题讨论】:
-
不严格相关,但您可能会从this 答案中得到一些提示。有一些示例函数可以从当前文件生成单词列表,还有一个自定义完成函数。我将在今天晚些时候尝试发布答案。
-
您的链接看起来很有趣且数据丰富。我会挖掘它。感谢您的帮助。
标签: regex vim code-completion