Tenho ultisnips de pacotes e você completou o instalador no meu macvim. O problema é que o ultisnips não funciona porque tab é limitado por ycm. Tentei colocar let g:UltiSnipsExpandTrigger = "<s-tab>"
para poder disparar a conclusão do trecho com shift-tab, mas não funciona por algum motivo desconhecido. Eu poderia usar caps como gatilho, mas até agora não encontrei nenhuma maneira de fazer isso.
Algum de vocês usa esses dois complementos juntos? O que posso fazer para que a guia shift funcione? Você pode recomendar outra chave para acionar snippets?
vim
autocomplete
macvim
ultisnips
pvinis
fonte
fonte
<S-Tab>
e o UltiSnips, IIRC também. Você deveria perguntar ao autor da YCM, eu acho.:verbose map <S-Tab>
, provavelmente não funcionará no vim da linha de comando. Um imo de substituição muito bom é<CR>
.Respostas:
Outra opção é usar o plug-in SuperTab:
Aqui o YouCompleteMe está vinculado a uma combinação diferente Ctrln, mas essa combinação está vinculada à guia da SuperTab. O UltiSnips e o SuperTab funcionam bem juntos, para que você possa vincular o UltiSnips à aba diretamente e tudo dará certo.
fonte
tab
dentro de um snippet irá para a próxima tabstop, em vez de concluir a sugestão do YCM. Eu tive que adicionarlet g:UltiSnipsJumpForwardTrigger = "<Right>"
elet g:UltiSnipsJumpBackwardTrigger = "<Left>"
fazer isso funcionar.Tente esta sugestão em uma página do rastreador de problemas do YouCompleteMe. No seu .vimrc:
Embora essa configuração faça com que a expansão de um trecho compartilhe o mapeamento padrão para avançar dentro de um trecho , ela simula o comportamento do TextMates, conforme mencionado nas tags de ajuda do UltiSnips.
Desde que mapeei minha tecla Caps Lock para Ctrl, esse mapeamento funciona muito bem.
fonte
copie o seguinte código para o seu vimrc e aproveite. Esta função tratará de todos os problemas entre o YCM e o UltiSnips.
fonte
g:UltiSnipsJumpForwardTrigger="<cr>"
para que eu pudesse ainda guia através de todas as conclusões possíveis / trechoseu tenho isso no meu vimrc
foi o que eu fiz na minha primeira tentativa, mas eu escrevi errado o UltiSnips com o Ultisnips .. oh bem, funcionou no final!
fonte
Pessoalmente, optei por não usar o
<tab>
YouCompleteMe, mas navegá-lo manualmente.Então eu adicionei isso ao meu
.vimrc
:que simplesmente desativa a tabchave para o YCM. Em vez disso, use as teclas de movimento (setas ou
CTRL-N
/CTRL-P
) e selecione a entrada com CR. O UltiSnips trabalha com o padrão tab.fonte
Apenas reunindo respostas de Michaelslec, Joey Liu e junto com as soluções que encontrei neste tópico e no vimrc desse cara , agora tenho isso que resolveu praticamente todos os problemas.
fonte
Embora eu saiba que este post é um pouco antigo, tenho minha própria função que é um pouco mais otimizada do que a mencionada acima:
Obviamente, se você mantiver as configurações fornecidas por Joey Liu e usar esta função, tudo funcionará perfeitamente!
Edição: Além disso, eu uso outra função para aumentar a funcionalidade de retrocesso entre YouCompleteMe e UltiSnips. Eu vou te mostrar o que eu quero dizer:
Em seguida, basta colocar isso no seu .vimrc:
Bem como
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
e seu conjunto!fonte
Eu uso os dois juntos. Por padrão, o YouCompleteMe liga
<Tab>
e<Down>
para selecionar o próximo item de conclusão e também<S-Tab>
e<Up>
para selecionar o item de conclusão anterior. Você pode alterar as ligações do YouCompleteMe com as opções g: ycm_key_list_select_completion e g: ycm_key_list_previous_completion . Observe que os nomes dessas opções foram alterados recentemente quando a opção foi alterada de uma única sequência para uma lista de sequências.fonte
Eu instalei o plugin UltiSnips após o plugin YouCompleteMe, então pensei que eles eram conflitantes, mas na realidade eu tinha algo mais interferente:
Remova isso
.vimrc
se estiver presente.fonte
Embora Muitas respostas funcionem bem neste post, eu só quero dizer que o problema é causado pela colisão de ligação de chave entre o YCM e o UltiSnip, enquanto o YCM suporta os snippets do UltiSnip por padrão, ele usa o gatilho de expansão padrão do UltiSnip
<tab>
como sua chave de seleção de conclusão, portanto Os snippets do UltiSnip não serão ampliados<tab>
. Dê-lhes diferente de ligação vai resolver o problema fundamental, eu pessoalmente uso<c-n
e<c-p>
para YCM e usar o padrão<tab>
para UltiSnip. Você pode obter mais detalhes com ohelp youcompleteme
doc in vim.fonte
Com base na resposta de Siegfried, estou usando o seguinte que parece mais natural:
Eu também uso as
c-hjkl
ligações em outro lugar (alternando de um painel para outro), mas isso seria apenas no modo normal, portanto não há problema.fonte
Eu uso
;
para expandir o UltiSnips, é tão bacana para mimfonte
\
porque descobri que não sabia digitar;
no modo de inserção do VimEu uso
kj
. Isto é o que está no meu.vimrc
:let g:UltisnipsExpandTrigger="kj"
.Raramente acontece que eu me deparo com a palavra que contém
kj
. Se for esse o caso, esperaria apenas alguns segundos após digitark
e esse tipoj
.fonte
Conforme mencionado por outros, o mapeamento de Cj para ultisnips funciona muito bem.
let g:UltiSnipsExpandTrigger="<c-j>"
Agora, se você for um pouco mais longe, instalar o xcape e usar
xcape -e "Shift_L=Control_R|J"
Você libera o poder de usar apenas a tecla Shift para obter dicas.
fonte