Vim 从一个窗格到另一个窗格),但这只能在正常模式下进行,所以没有问题。

Vim 从一个窗格到另一个窗格),但这只能在正常模式下进行,所以没有问题。,vim,autocomplete,macvim,ultisnips,Vim,Autocomplete,Macvim,Ultisnips,只是将Michaelslec、Joey Liu的答案以及我在中找到的解决方案放在一起,现在我有了这个解决方案,几乎解决了所有问题 function! g:UltiSnips_Complete() call UltiSnips#ExpandSnippet() if g:ulti_expand_res == 0 if pumvisible() return "\<C-n>" else call UltiSnips#JumpForwards(

只是将Michaelslec、Joey Liu的答案以及我在中找到的解决方案放在一起,现在我有了这个解决方案,几乎解决了所有问题

function! g:UltiSnips_Complete()
  call UltiSnips#ExpandSnippet()
  if g:ulti_expand_res == 0
    if pumvisible()
      return "\<C-n>"
    else
      call UltiSnips#JumpForwards()
      if g:ulti_jump_forwards_res == 0
        return "\<TAB>"
      endif
    endif
  endif
  return ""
endfunction

function! g:UltiSnips_Reverse()
  call UltiSnips#JumpBackwards()
  if g:ulti_jump_backwards_res == 0
    return "\<C-P>"
  endif

  return ""
endfunction


if !exists("g:UltiSnipsJumpForwardTrigger")
  let g:UltiSnipsJumpForwardTrigger = "<tab>"
endif

if !exists("g:UltiSnipsJumpBackwardTrigger")
  let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
endif

au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger     . " <C-R>=g:UltiSnips_Complete()<cr>"
au InsertEnter * exec "inoremap <silent> " .     g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
函数!g:UltiSnips_Complete()
调用UltiSnips#ExpandSnippet()
如果g:ulti_expand_res==0
如果可见()
返回“\”
其他的
呼叫UltiSnips#JumpForwards()
如果g:ulti_jump_forwards_res==0
返回“\”
恩迪夫
恩迪夫
恩迪夫
返回“”
端功能
功能!g:UltiSnips_Reverse()
呼叫UltiSnips#JumpBackwards()
如果g:ulti_jump_backwards_res==0
返回“\”
恩迪夫
返回“”
端功能
如果!存在(“g:UltiSnipsJumpForwardTrigger”)
设g:UltiSnipsJumpForwardTrigger=“”
恩迪夫
如果!存在(“g:UltiSnipsJumpBackardTrigger”)
设g:UltiSnipsJumpBackardTrigger=“”
恩迪夫
au InsertEnter*执行“inoremap”。g:UltiSnipsExpandTrigger。“=g:UltiSnips_Complete()”
au InsertEnter*执行“inoremap”。g:UltiSnipsJumpBackardTrigger。“=g:UltiSnips_Reverse()”

我在YouCompleteMe插件之后安装了UltiSnips插件,因此我认为它们相互冲突,但实际上我有一些更具干扰性的东西:

set paste

如果存在,请确保将其从
.vimrc
中删除。

我使用
kj
。这就是我的
.vimrc
中的内容:

let g:ycm_key_list_select_completion=[]
let g:ycm_key_list_previous_completion=[]
让g:UltisnipsExpandTrigger=“kj”


我很少会遇到含有
kj
的单词。如果是这种情况,我会在键入
k
和其他人提到的
j
之后等待几秒钟,将C-j映射到ultisnips非常有效。
让g:UltiSnipsExpandTrigger=“”

现在,如果您进一步安装xcape并使用
xcape-e“Shift\u L=Control\u R\124; J”


您只需使用shift键即可释放utlitsnips的功能。

我使用
要扩展UltiSnips,它对我来说太漂亮了

let g:UltiSnipsExpandTrigger = ";"


YCM还映射了
,UltiSnips、IIRC也是如此。我想你应该问问YCM的作者。我在YCM上更改了先前完成的键,并删除了s-tab。仍然不起作用。我将尝试在github上给他发消息,我猜如果你的map正在使用
:verbose map
,那么它可能在命令行vim上不起作用。imo的一个很好的替代品是
。谢谢你,我很想找到一个解决方案,而YouCompleteMe没有论坛这一事实让人恼火。谢谢你最近又试过了吗?一个或两个插件必须已经更新,因为UltiSnips文档中说:“YouCompleteMe-为UltiSnips提供了开箱即用的完成支持。它为代码片段提供了一个非常好的完成对话。”我想这是应该得到的一些赞扬:BufEnter autocmd写了一些评论。这似乎对我不起作用,对于MacOSX;截至2014年7月10日。然而,齐格弗里德的回答奏效了。到目前为止似乎还不错!但是我怎样才能“通过”代码段断点?我发现绑定
g:UltiSnipsJumpForwardTrigger=“”
很方便,这样我仍然可以通过所有可能的完成/代码段进行选项卡这让我可以通过YCM列出的完成(包括Ultisnips建议)进行选项卡,但最后一行inoremap实际上似乎并没有影响我按下回车键。我可以用手动触发完成,但enter不做任何事情。有什么建议吗?Joey Liu的建议对我不起作用(tab不会展开任何内容,它只会滚动到下一个自动完成选项)。这个答案很有效,但我必须先更新并重新编译YouCompleteMe。正如其他人提到的,Joey Liu的解决方案不再有效。这个是!有没有办法突出显示自动完成列表中的片段?该死!伙计!工作得很有魅力!最好的解决方案!这很好,但是在代码段中点击
选项卡将转到下一个tabstop,而不是完成YCM建议。我必须添加
让g:UltiSnipsJumpForwardTrigger=“”
让g:ultisnipsjumpbackardtrigger=“”
,这应该是最好的答案,简单明了,尽管在macOS 10.12上的macvim中不起作用,我将其更改为,然后一切正常。向前、向后展开代码段。ThanksI是Ultisnips的新手,我尝试了这个建议。我不建议这样做,因为将“向前跳”和“扩展”映射到同一个键会使嵌套的代码段无法使用,这是您最终最可能需要的。这在基本上尝试用COC和Ultisnips解决相同问题时非常有用。想要使用和上下移动PUM,以及在Ultisnips占位符内来回移动。谢谢。编辑:我现在使用
\
,因为我发现我无法键入
在Vim的插入模式下,此功能正常,感觉自然。谢谢分享!
function! g:UltiSnips_Reverse()                                                                                               
  call UltiSnips#JumpBackwards()                                                                                              
  if g:ulti_jump_backwards_res == 0        
    return "\<C-P>"                                                                                                           
  endif                                                                                                                       

  return ""                                                                                                                   
endfunction
au BufEnter * exec "inoremap <silent> " . g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
" if you use Vundle, load plugins:
Bundle 'ervandew/supertab'
Bundle 'Valloric/YouCompleteMe'
Bundle 'SirVer/ultisnips'

" make YCM compatible with UltiSnips (using supertab)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'

" better key bindings for UltiSnipsExpandTrigger
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
let g:ycm_key_list_select_completion=[]
let g:ycm_key_list_previous_completion=[]
let g:ycm_key_list_select_completion = ['<C-j>']
let g:ycm_key_list_previous_completion = ['<C-k>']

let g:UltiSnipsExpandTrigger = "<C-l>"
let g:UltiSnipsJumpForwardTrigger = "<C-j>"
let g:UltiSnipsJumpBackwardTrigger = "<C-k>"
function! g:UltiSnips_Complete()
  call UltiSnips#ExpandSnippet()
  if g:ulti_expand_res == 0
    if pumvisible()
      return "\<C-n>"
    else
      call UltiSnips#JumpForwards()
      if g:ulti_jump_forwards_res == 0
        return "\<TAB>"
      endif
    endif
  endif
  return ""
endfunction

function! g:UltiSnips_Reverse()
  call UltiSnips#JumpBackwards()
  if g:ulti_jump_backwards_res == 0
    return "\<C-P>"
  endif

  return ""
endfunction


if !exists("g:UltiSnipsJumpForwardTrigger")
  let g:UltiSnipsJumpForwardTrigger = "<tab>"
endif

if !exists("g:UltiSnipsJumpBackwardTrigger")
  let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
endif

au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger     . " <C-R>=g:UltiSnips_Complete()<cr>"
au InsertEnter * exec "inoremap <silent> " .     g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
set paste
let g:UltiSnipsExpandTrigger = ";"