J'ai des bundles ultisnips et youcompleteme installés sur mon macvim. Le problème est que ultisnips ne fonctionne pas car tab est lié par ycm. J'ai essayé de faire en let g:UltiSnipsExpandTrigger = "<s-tab>"
sorte que je puisse déclencher l'achèvement de l'extrait avec shift-tab, mais cela ne fonctionne pas pour une raison inconnue. Je pourrais utiliser des bouchons comme déclencheur, mais jusqu'à présent, je n'ai trouvé aucun moyen de le faire.
L'un d'entre vous utilise-t-il ces deux modules complémentaires ensemble? Que puis-je faire pour que l'onglet shift fonctionne? Pouvez-vous recommander une autre clé pour déclencher des extraits?
vim
autocomplete
macvim
ultisnips
pvinis
la source
la source
<S-Tab>
, tout comme UltiSnips, IIRC. Vous devriez demander à l'auteur de YCM, je suppose.:verbose map <S-Tab>
, elle ne fonctionnera probablement pas sur la ligne de commande vim. Un très bon remplacement est imo<CR>
.Réponses:
Une autre option consiste à utiliser le plugin SuperTab:
Ici, YouCompleteMe est lié à une combinaison différente Ctrln, mais cette combinaison est liée à l'onglet via SuperTab. UltiSnips et SuperTab fonctionnent bien ensemble, vous pouvez donc simplement lier UltiSnips à l'onglet directement et tout fonctionnera.
la source
tab
intérieur d'un extrait de code ira au prochain tabstop, au lieu de compléter la suggestion YCM. J'ai dû ajouterlet g:UltiSnipsJumpForwardTrigger = "<Right>"
etlet g:UltiSnipsJumpBackwardTrigger = "<Left>"
faire ce travail.Essayez cette suggestion sur un page de l'outil de suivi des problèmes YouCompleteMe. Dans votre .vimrc:
Bien que ce paramètre fasse en sorte que l'expansion d'un extrait de code partage le mappage par défaut pour sauter en avant dans un extrait de code , il simule le comportement de TextMates comme indiqué dans les balises d'aide d'UltiSnips.
Depuis que j'ai mappé ma touche de verrouillage des majuscules à Ctrl, ce mappage fonctionne assez bien.
la source
copiez le code suivant dans votre vimrc et profitez-en. Cette fonction gérera tous les problèmes entre YCM et UltiSnips.
la source
g:UltiSnipsJumpForwardTrigger="<cr>"
afin que je puisse toujours parcourir toutes les complétions / extraits possiblesj'ai ceci dans mon vimrc
c'est ce que j'ai fait lors de mon premier essai, mais j'ai mal orthographié UltiSnips avec Ultisnips .. eh bien, a fonctionné à la fin!
la source
J'ai personnellement choisi de ne pas utiliser
<tab>
avec YouCompleteMe mais de naviguer manuellement.J'ai donc ajouté ceci à mon
.vimrc
:qui désactive simplement la tabclé pour YCM. À la place, vous utilisez les touches de déplacement (flèches ou
CTRL-N
/CTRL-P
) et sélectionnez l'entrée avec CR. UltiSnips fonctionne par défaut avec tab.la source
Juste en rassemblant les réponses de Michaelslec, Joey Liu et avec les solutions que j'ai trouvées dans ce fil de discussion et le vimrc de ce gars , j'ai maintenant cela qui a résolu à peu près tous les problèmes.
la source
Bien que je sache que cet article est un peu vieux, j'ai ma propre fonction qui est un peu plus optimisée que celle donnée ci-dessus:
Bien sûr, si vous gardez simplement les paramètres fournis par Joey Liu et que vous utilisez simplement cette fonction, tout fonctionnera parfaitement!
EDIT: J'utilise également une autre fonction pour augmenter la fonctionnalité de recul entre YouCompleteMe et UltiSnips. Je vais vous montrer ce que je veux dire:
Ensuite, mettez simplement ceci dans votre .vimrc:
Ainsi que
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
et votre ensemble!la source
J'utilise les deux ensemble. Par défaut, YouCompleteMe lie
<Tab>
et<Down>
pour sélectionner l'élément d'achèvement suivant et aussi<S-Tab>
et<Up>
pour sélectionner l'élément d'achèvement précédent. Vous pouvez modifier les liaisons YouCompleteMe avec les options g: ycm_key_list_select_completion et g: ycm_key_list_previous_completion . Notez que les noms de ces options ont été récemment modifiés lorsque l'option est passée d'une chaîne unique à une liste de chaînes.la source
J'ai installé le plugin UltiSnips après le plugin YouCompleteMe donc j'ai pensé qu'ils étaient en conflit, mais en réalité j'avais quelque chose de plus interférant:
Assurez-vous de le supprimer
.vimrc
s'il est présent.la source
Bien que Many answer fonctionne correctement dans cet article, je veux juste dire que le problème est causé par une collision de liaison de clé entre YCM et UltiSnip, alors que YCM prend en charge les extraits UltiSnip par défaut, il prend le déclencheur d'extension UltiSnip par défaut
<tab>
comme touche de sélection d'achèvement, donc Les extraits de code UltiSnip ne seront pas développés par<tab>
. Leur donner une liaison de clé différente résoudra le problème, j'utilise personnellement<c-n
et<c-p>
pour YCM et j'utilise la valeur<tab>
par défaut pour UltiSnip. Vous pouvez obtenir plus de détails avechelp youcompleteme
doc dans vim.la source
Sur la base de la réponse de Siegfried, j'utilise ce qui suit qui semble plus naturel:
J'utilise également les
c-hjkl
liaisons ailleurs (passage d'un volet à un autre), mais ce ne serait qu'en mode normal, donc il n'y a pas de problème.la source
J'utilise
;
pour développer UltiSnips, c'est tellement chouette pour moila source
\
parce que j'ai trouvé que je ne pouvais pas taper;
sur le mode d'insertion de VimJ'utilise
kj
. Voici ce qu'il y a dans mon.vimrc
:let g:UltisnipsExpandTrigger="kj"
.Il m'arrive rarement de tomber sur un mot qui contient
kj
. Si tel est le cas, j'attendrais juste quelques secondes après avoir tapék
et ce typej
.la source
Comme mentionné par d'autres, mapper Cj aux ultisnips fonctionne très bien.
let g:UltiSnipsExpandTrigger="<c-j>"
Maintenant, si vous allez un peu plus loin et installez xcape et utilisez
xcape -e "Shift_L=Control_R|J"
Vous libérez la puissance d'utiliser uniquement la touche Maj pour les utlitsnips.
la source