Ich habe Bundles ultisnips und youcompleteme auf meinem Macvim installiert. Das Problem ist, dass ultisnips nicht funktioniert, da die Registerkarte durch ycm gebunden ist. Ich habe versucht zu setzen, let g:UltiSnipsExpandTrigger = "<s-tab>"
damit ich die Snippet-Vervollständigung mit der Umschalttaste auslösen kann, aber es funktioniert aus einem unbekannten Grund nicht. Ich könnte Kappen als Auslöser verwenden, aber bisher habe ich keine Möglichkeit gefunden, dies zu tun.
Verwendet einer von Ihnen diese beiden Add-Ons zusammen? Was kann ich tun, damit die Umschalttaste funktioniert? Können Sie einen anderen Schlüssel zum Auslösen von Snippets empfehlen?
vim
autocomplete
macvim
ultisnips
pvinis
quelle
quelle
<S-Tab>
auch UltiSnips, IIRC. Sie sollten den Autor von YCM fragen, denke ich.:verbose map <S-Tab>
, sie funktioniert jedoch wahrscheinlich nicht in der Befehlszeile vim. Ein ziemlich guter Ersatz imo ist<CR>
.Antworten:
Eine weitere Option ist die Verwendung des SuperTab-Plugins:
Hier ist YouCompleteMe an eine andere Kombination gebunden Ctrln, aber dann ist diese Kombination über SuperTab an die Registerkarte gebunden. UltiSnips und SuperTab spielen gut zusammen, sodass Sie UltiSnips einfach direkt an die Registerkarte binden können und alles klappt.
quelle
tab
in ein Snippet klicken, wird zum nächsten Tabstop gewechselt, anstatt den YCM-Vorschlag zu vervollständigen. Ich musste hinzufügenlet g:UltiSnipsJumpForwardTrigger = "<Right>"
undlet g:UltiSnipsJumpBackwardTrigger = "<Left>"
diese Arbeit machen.Probieren Sie diesen Vorschlag auf einer Seite des YouCompleteMe-Issue-Trackers aus. In Ihrer .vimrc:
Während diese Einstellung das Erweitern einer Snippet- Freigabe zur Standardzuordnung für das Vorwärtsspringen innerhalb eines Snippets macht , simuliert sie das Verhalten von TextMates, wie in den UltiSnips-Hilfetags erwähnt.
Da ich meine Feststelltaste der Strg-Taste zugeordnet habe, funktioniert diese Zuordnung ziemlich reibungslos.
quelle
Kopieren Sie den folgenden Code in Ihr vimrc und genießen Sie. Diese Funktion behandelt alle Probleme zwischen YCM und UltiSnips.
quelle
g:UltiSnipsJumpForwardTrigger="<cr>"
damit ich immer noch alle möglichen Vervollständigungen / SchnipselIch habe dies in meinem Vimrc
Das habe ich bei meinem ersten Versuch getan, aber ich habe UltiSnips mit Ultisnips falsch geschrieben. Na ja, am Ende hat es geklappt!
quelle
Ich persönlich habe mich dafür entschieden, nicht
<tab>
mit YouCompleteMe zu verwenden, sondern manuell zu navigieren.Also habe ich dies zu meinem hinzugefügt
.vimrc
:tabDadurch wird der Schlüssel für YCM einfach deaktiviert . Stattdessen verwenden Sie die Bewegungstasten (Pfeile oder
CTRL-N
/CTRL-P
) und wählen den Eintrag mit aus CR. UltiSnips funktioniert standardmäßig mit tab.quelle
Wenn ich nur die Antworten von Michaelslec, Joey Liu und die Lösungen zusammenstelle, die ich in diesem Themen-Thread und im Vimrc dieses Typen gefunden habe , habe ich jetzt diese, die so ziemlich alle Probleme gelöst haben.
quelle
Obwohl ich weiß, dass dieser Beitrag etwas alt ist, habe ich meine eigene Funktion, die etwas optimierter ist als die oben angegebene:
Wenn Sie nur die von Joey Liu bereitgestellten Einstellungen beibehalten und dann diese Funktion verwenden, funktioniert natürlich alles perfekt!
BEARBEITEN: Außerdem verwende ich eine andere Funktion, um die Back-Stepping-Funktionalität zwischen YouCompleteMe und UltiSnips zu erhöhen. Ich zeige dir was ich meine:
Dann füge dies einfach in deine .vimrc ein:
Sowie
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
und dein Set!quelle
Ich benutze beide zusammen. Standardmäßig YouCompleteMe bindet
<Tab>
und<Down>
den nächsten Abschluss Punkt auszuwählen und auch<S-Tab>
und<Up>
den vorherigen Abschluss Punkt auszuwählen. Sie können die YouCompleteMe-Bindungen mit den Optionen g: ycm_key_list_select_completion und g: ycm_key_list_previous_completion ändern . Beachten Sie, dass die Namen dieser Optionen kürzlich geändert wurden, als die Option von einer einzelnen Zeichenfolge in eine Liste von Zeichenfolgen geändert wurde.quelle
Ich habe das UltiSnips-Plugin nach dem YouCompleteMe-Plugin installiert, sodass ich dachte, dass sie in Konflikt stehen, aber in Wirklichkeit hatte ich etwas störenderes:
Stellen Sie sicher, dass
.vimrc
Sie das entfernen, wenn es vorhanden ist.quelle
Während viele Antworten in diesem Beitrag einwandfrei funktionieren, möchte ich nur sagen, dass das Problem durch eine Kollision der Schlüsselbindung zwischen YCM und UltiSnip verursacht wird. Während YCM UltiSnip-Snippets standardmäßig unterstützt, wird der standardmäßige UltiSnip-Erweiterungsauslöser
<tab>
als Abschlussauswahlschlüssel verwendet UltiSnip-Snippets werden von nicht erweitert<tab>
. Geben Sie ihnen eine andere Schlüsselbindung, um das Problem zu lösen. Ich persönlich verwende<c-n
und<c-p>
für YCM und verwende die Standardeinstellung<tab>
für UltiSnip. Weitere Informationen erhalten Sie mithelp youcompleteme
doc in vim.quelle
Basierend auf Siegfrieds Antwort verwende ich Folgendes, was natürlicher erscheint:
Ich verwende die
c-hjkl
Bindungen auch woanders (Wechsel von einem Bereich zu einem anderen), aber das wäre nur im normalen Modus, also gibt es kein Problem.quelle
Ich benutze
;
UltiSnips, es ist so geschickt für michquelle
\
weil ich festgestellt habe, dass ich;
im Einfügemodus von Vim nicht tippen konnteIch benutze
kj
. Das ist was in meinem ist.vimrc
:let g:UltisnipsExpandTrigger="kj"
.Es kommt selten vor, dass ich auf ein Wort stoße, das
kj
darin enthalten ist. Wenn dies der Fall ist, würde ich nur ein paar Sekunden nach der Eingabek
und dieser Eingabe wartenj
.quelle
Wie von anderen erwähnt, funktioniert die Zuordnung von Cj zu Ultisnips hervorragend.
let g:UltiSnipsExpandTrigger="<c-j>"
Nun, wenn Sie ein bisschen weiter gehen und xcape installieren und verwenden
xcape -e "Shift_L=Control_R|J"
Sie können nur die Umschalttaste für Utlitsnips verwenden.
quelle