有一个未在vim帮助文件中列出的完成类型(特别是:insert.txt),但我本能地感觉到需要经常使用。假设我的文件中有“Awesome”和“SuperCrazyAwesome”字样。我发现Awesome的一个实例应该是SuperCrazyAwesome,所以我跳到单词的开头,进入插入模式,然后必须输入“SuperCrazy”。
我觉得我应该可以键入“S”,创建“SCrazy”,然后只需点击一两个完成热键即可找到光标左侧的内容(“S”),右边是什么(“疯狂”),正则表达式反对文件中的所有单词(“/ S \ w * Crazy /”),并为我提供选择的完成弹出菜单,或者如果只有一个匹配则执行替换。
我想使用实际的完成系统。存在使用函数的“用户定义”完成,并且在帮助替换给定列表方面具有良好示例。但是,我似乎无法追查我需要做出的许多细节,包括:
我已经在这里呆了几个小时了。我一直在追求死胡同,例如this one,它将我引入\%#以匹配光标位置,这对我来说似乎不起作用。例如,搜索\ w * \%#只返回我所在单词的第一个字符,无论我在哪里。 \%#似乎没有锚定。
答案 0 :(得分:0)
虽然它过去并没有完全遵循您想要的方法,但我写了https://github.com/mjbrownie/swapit,如果您正在寻找相关的关键字,它可能会执行您的任务。如果您有数百场比赛,它将在这种情况下失败。
它主要用于2-10种可能的测序匹配。
您将定义一个列表
:SwapList非常棒令人敬畏更多令人敬畏的SuperCrazyAwesome完全令人难以置信的令人难以置信的
并使用递增器递减键(c + a)(c + x)移动匹配
还有一些其他的循环类型插件,比如我在vim.org和github上所知的交换字。
这里的优点是您不必将单词与正则表达式组合在一起。
答案 1 :(得分:0)
我在几年前写过类似于第三方库的东西,在每个组件的每个函数中使用相当长的CamelCasePrefixes。但它是在Git Hub之前的时代,我认为它是一个失落的宝石,但搜索引擎说我不是一个完整的屁股,并将其发布到Vim维基。
这是:http://vim.wikia.com/wiki/Custom_keyword_completion
请不要问我'MKw'是什么意思。不知道。
这需要一些适应你的需求,因为它只查找到光标的单词,但想法就在那里。它仅适用于当前缓冲区。迭代所有缓冲区将会缓慢,因为它没有创建任何索引。出于这些目的,我会选择外部grep。