Tengo paquetes ultisnips y youcompleteme instalado en mi macvim. El problema es que los ultisnips no funcionan porque la pestaña está unida por ycm. Traté de poner let g:UltiSnipsExpandTrigger = "<s-tab>"
para poder activar la finalización del fragmento con shift-tab, pero no funciona por alguna razón desconocida. Podría usar mayúsculas como disparador, pero hasta ahora no he encontrado la manera de hacerlo.
¿Alguno de ustedes usa esos dos complementos juntos? ¿Qué puedo hacer para que la pestaña shift funcione? ¿Me puede recomendar otra clave para activar fragmentos?
vim
autocomplete
macvim
ultisnips
pvinis
fuente
fuente
<S-Tab>
y también lo hace UltiSnips, IIRC. Deberías preguntarle al autor de YCM, supongo.:verbose map <S-Tab>
, aunque probablemente no funcionará en la línea de comando vim. Un buen reemplazo de la OMI es<CR>
.Respuestas:
Otra opción es usar el complemento SuperTab:
Aquí YouCompleteMe está vinculado a una combinación diferente Ctrln, pero luego esa combinación está vinculada a la pestaña a través de SuperTab. UltiSnips y SuperTab juegan bien juntos, por lo que puede vincular UltiSnips a la pestaña directamente y todo saldrá bien.
fuente
tab
dentro de un fragmento irá a la siguiente pestaña, en lugar de completar la sugerencia de YCM. Tuve que agregarlet g:UltiSnipsJumpForwardTrigger = "<Right>"
ylet g:UltiSnipsJumpBackwardTrigger = "<Left>"
hacer que esto funcione.Pruebe esta sugerencia en una página del rastreador de problemas de YouCompleteMe. En tu .vimrc:
Si bien esta configuración hará que la expansión de un fragmento comparta la asignación predeterminada para saltar hacia adelante dentro de un fragmento , simula el comportamiento de TextMates como se menciona en las etiquetas de ayuda de UltiSnips.
Como he asignado mi tecla Bloq Mayús a Ctrl, esta asignación funciona bastante bien.
fuente
copia el siguiente código a tu vimrc y disfruta. Esta función manejará todos los problemas entre YCM y UltiSnips.
fuente
g:UltiSnipsJumpForwardTrigger="<cr>"
para poder seguirtengo esto en mi vimrc
eso es lo que hice en mi primer intento, pero escribí mal UltiSnips con Ultisnips ... ¡bueno, al final funcionó!
fuente
Personalmente elegí no usar
<tab>
con YouCompleteMe sino navegarlo manualmente.Entonces agregué esto a mi
.vimrc
:que simplemente deshabilita la tabclave para YCM. En su lugar, use las teclas de movimiento (flechas o
CTRL-N
/CTRL-P
) y seleccione la entrada con CR. UltiSnips funciona por defecto con tab.fuente
Simplemente reuniendo las respuestas de Michaelslec, Joey Liu y junto con las soluciones que encontré en este hilo del problema y el vimrc de este tipo , ahora tengo esto que resolvió casi todos los problemas.
fuente
Aunque sé que esta publicación es un poco antigua, tengo mi propia función que está un poco más optimizada que la anterior:
Por supuesto, si mantiene la configuración que proporcionó Joey Liu y luego usa esta función, ¡todo funcionará perfectamente!
EDITAR: Además, uso otra función para aumentar la funcionalidad de retroceso entre YouCompleteMe y UltiSnips. Te mostraré lo que quiero decir:
Luego solo pon esto en tu .vimrc:
Así como
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
y tu conjunto!fuente
Los uso a los dos juntos. De forma predeterminada, YouCompleteMe se une
<Tab>
y<Down>
selecciona el siguiente elemento de finalización y también<S-Tab>
y<Up>
selecciona el elemento de finalización anterior. Puede cambiar los enlaces de YouCompleteMe con las opciones g: ycm_key_list_select_completion y g: ycm_key_list_previous_completion . Tenga en cuenta que los nombres de estas opciones se cambiaron recientemente cuando la opción se cambió de una sola cadena a una lista de cadenas.fuente
Instalé el complemento UltiSnips después del complemento YouCompleteMe, así que pensé que eran conflictivos, pero en realidad tenía algo más interferente:
Asegúrese de eliminar eso de
.vimrc
si está presente.fuente
Si bien Muchas respuestas funcionan bien en esta publicación, solo quiero decir que el problema es causado por la colisión de enlace de teclas entre YCM y UltiSnip, mientras que YCM admite fragmentos de UltiSnip de forma predeterminada, toma el desencadenador de expansión de UltiSnip predeterminado
<tab>
como su tecla de selección de finalización, por lo que Los fragmentos de UltiSnip no serán expandidos por<tab>
. Darles una combinación de teclas diferente resolverá el problema, yo personalmente uso<c-n
y<c-p>
para YCM y uso el valor predeterminado<tab>
para UltiSnip. Puede obtener más detalles conhelp youcompleteme
doc en vim.fuente
Basado en la respuesta de Siegfried, estoy usando lo siguiente que parece más natural:
También uso los
c-hjkl
enlaces en otro lugar (cambiar de un panel a otro), pero eso solo estaría en modo normal, por lo que no hay problema.fuente
Yo uso
;
para expandir UltiSnips, es tan ingenioso para mífuente
\
porque descubrí que no podía escribir;
en el modo de inserción de VimYo uso
kj
. Esto es lo que hay en mi.vimrc
:let g:UltisnipsExpandTrigger="kj"
.Raramente sucede que me encuentro con la palabra que contiene
kj
. Si este es el caso, solo esperaría un par de segundos después de escribirk
y ese tipoj
.fuente
Como lo mencionaron otros, asignar Cj a ultisnips funciona muy bien.
let g:UltiSnipsExpandTrigger="<c-j>"
Ahora, si va un poco más allá e instala xcape y usa
xcape -e "Shift_L=Control_R|J"
Libera el poder de usar solo la tecla shift para utlitsnips.
fuente