Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单词vim前后的补全_Vim_Completion - Fatal编程技术网

单词vim前后的补全

单词vim前后的补全,vim,completion,Vim,Completion,我添加了这样一个词汇: foo.bar this.is.a.test 我做了:设置iskeyword+=。以完成工作,尽管有点: 当我键入fo-->foo.bar 但我也希望有这样的完成: test-->this.is.a.test 我的意思是,我不会总是打一个词的开头 我希望我是清楚的 提前感谢内置补全功能始终提供以补全基数开始的匹配。但是,您可以编写实现不同策略的自定义完成 如果您的字典是一个加载的缓冲区(而不是内置的字典完成:help i\u CTRL-X\u CTRL-K),则my将更

我添加了这样一个词汇:

foo.bar
this.is.a.test
我做了
:设置iskeyword+=。
以完成工作,尽管有点:

当我键入
fo
-->
foo.bar

但我也希望有这样的完成:

test
-->
this.is.a.test

我的意思是,我不会总是打一个词的开头

我希望我是清楚的


提前感谢

内置补全功能始终提供以补全基数开始的匹配。但是,您可以编写实现不同策略的自定义完成

如果您的字典是一个加载的缓冲区(而不是内置的字典完成
:help i\u CTRL-X\u CTRL-K
),则my将更容易实现匹配项的提取。通过它,提供了相关的功能:当光标位于
|test
左侧时,完成
this.is.a.test
。(我还有一个MiddleEndComplete插件正在开发中,它可能接近你想要的。)

/
之后,使用插入模式的
,你可以完成之前完成的单词。这假设这些词出现在一起。这意味着您不需要将
添加到
'iskeyword'
(最好不要添加!)

至于通过单词的结尾来完成,正如@Ingo Karkat所建议的,最好是通过自定义完成。然而,我个人没有遇到这样一个完成的需要

如何使用
以下
/
  • 键入第一个单词或其一部分。e、 示例中的g
    test
  • 点击
    开始完成并打开完成菜单
  • 通过
    查找正确的完成项(可选)
  • 点击
    完成下一个单词,例如示例中的
    .is
  • 通过
    查找正确的完成项(可选)
  • 根据需要重复
    /
    步骤
因此:
test
将产生
这个.is.a.test

结论 使用
很难解释,但经过几次尝试后就更容易理解了。相信我,这是值得的。您也可以在整行完成时使用类似的技巧,即
。帮自己一个忙,只需阅读所有的
:h-ins-completion
,你就会做得更好

关于使用
完成 Vim提供各种完成选项。e、 g通过
、标签:
、文件名:
等完成整行操作。通常使用一个聪明的
映射或类似插件的方式来完成,通过让他们感觉不那么熟悉来隐藏这些其他完成模式。注:SuperTab因引起冲突或不良行为而臭名昭著

有关更多帮助,请参阅:

:h i_ctrl-x_ctrl-p
:h ins-completion
:h 'complete'
:h 'completeopt'

我不认为
像你描述的那样有效。“previous”仅用于搜索方向(即候选项的排序),重复它仍将完成下一个匹配。它只考虑来自当前缓冲区(而不是字典)的单词。@IngoKarkat你是对的,这不适用于字典,只适用于当前缓冲区。但是,如果当前缓冲区中已存在
this.is.a.test
,则
test
可以生成
this.is.a.test
(也假设
设置isk-=。
)。我相信这是一个合理的本地人solution@IngoKarkat:很抱歉,在
之后使用
可以使用除当前缓冲区之外的其他缓冲区。我试过了。很抱歉,我使用了isk+=。因为我想要this.is.a.test被认为是一个单词,而不是四个。这只是因为我使用了qooxdoo框架(),它是每个类的语法。啊,我知道我完全误解了你使用的
this
关键字:-)完全忘记了包名。。。