我想在vim中使用Ctrl+ Space进行omni-completion(如果没有omni-completion ,则使用关键字完成).我试过这个,我在网上找到了一个地方:
inoremappumvisible() ? "\ " : "\ \ \ \ \ =pumvisible() ? \"\\ \" : \"\\ \""
但它不起作用.任何使用Ctrl+ Space的人都可以告诉我正确的方法(有效)吗?
值得注意的是,它需要在vim NOT gvim的终端版本中工作.
试试这个:
inoremappumvisible() \|\| &omnifunc == '' ? \ "\ C-n>" : \ "\ C-x>\ C-o> =pumvisible() ?" . \ "\"\\ c-n>\\ c-p>\\ c-n>\" :" . \ "\" \\ bs>\\ C-n>\"\ " imap
上面的方式是"有点"工作,但它是如此难以理解,几乎没有人能说出它实际上做了什么.上面的解决方案并不好.
简答 - 使用此:
function! Auto_complete_string() if pumvisible() return "\" else return "\ \ \ =Auto_complete_opened()\ " end endfunction function! Auto_complete_opened() if pumvisible() return "\ " end return "" endfunction inoremap Auto_complete_string() inoremap Auto_complete_string()
这个答案还表示Ctrl + Space有两个可能的值(取决于终端/ gvim用法):
和
.
我使用类似于jedi-vim中的第一个方法,但更可定制.
答案很长 - 以上是做什么的:
完全逃避上述答案是如此令人困惑,我将上述答案分成可读格式:
function! Auto_complete_string() if pumvisible() return "\" else return "\ \ \ =Auto_complete_opened()\ " end endfunction function! Auto_complete_opened() if pumvisible() return "\ \ \ " else return "\ \ " end endfunction inoremap Auto_complete_string()
这清楚地表明了它在做什么.发生了一些奇怪的事情Auto_complete_opened
.它不只是完成,它在尝试完成之后还做了两件事:
当试图使用omnicompletion时,它会以某种方式执行
,这可能是恕我直言的缩写
.
如果完成不成功,它会使用退格并再次完成,
但不会
,但这并没有多大意义.
我不是说这不是某些用户可能想要的,但它可能不是大多数用户想要的!我的简短回答以信用为主,并为您提供了一种简单的编辑方式.现在,您只需轻松改变的事情,如果你想(例如
到
,如果你想从一开始写在第一个条目).