У меня есть пакеты ultisnips и youcompleteme, установленные на моем macvim. Проблема в том, что ultisnips не работает, потому что вкладка привязана к ycm. Я попытался поставить let g:UltiSnipsExpandTrigger = "<s-tab>"
так, чтобы я мог вызвать завершение фрагмента с помощью shift-tab, но по неизвестной причине это не работает. Я мог бы использовать колпачки в качестве триггера, но пока не нашел способа сделать это.
Кто-нибудь из вас использует эти два дополнения вместе? Что я могу сделать, чтобы сдвиг табуляции работал? Можете ли вы порекомендовать другой ключ для запуска сниппетов?
vim
autocomplete
macvim
ultisnips
pvinis
источник
источник
<S-Tab>
и UltiSnips, IIRC. Думаю, вам следует спросить автора YCM.:verbose map <S-Tab>
хотя, вероятно, она не будет работать в командной строке vim. Хорошая замена имо есть<CR>
.Ответы:
Другой вариант - использовать плагин SuperTab:
Здесь YouCompleteMe привязан к другой комбинации Ctrln, но затем эта комбинация привязана к табуляции через SuperTab. UltiSnips и SuperTab отлично работают вместе, поэтому вы можете просто привязать UltiSnips к вкладке напрямую, и все будет работать.
источник
tab
нажатие внутри фрагмента приведет к переходу к следующей позиции табуляции, а не к завершению предложения YCM. Мне пришлось добавитьlet g:UltiSnipsJumpForwardTrigger = "<Right>"
иlet g:UltiSnipsJumpBackwardTrigger = "<Left>"
заставить эту работу.Попробуйте это предложение на странице из системы отслеживания проблем YouCompleteMe. В вашем .vimrc:
Хотя этот параметр заставляет раскрывающийся фрагмент использовать сопоставление по умолчанию для перехода вперед внутри фрагмента , он имитирует поведение TextMates, как указано в тегах справки UltiSnips.
Поскольку я сопоставил свою клавишу Caps Lock с Ctrl, это сопоставление работает довольно плавно.
источник
скопируйте следующий код на свой vimrc и наслаждайтесь. Эта функция решает все проблемы между YCM и UltiSnips.
источник
g:UltiSnipsJumpForwardTrigger="<cr>"
чтобы я мог по-прежнему просматривать все возможные дополнения / фрагментыу меня это в моем vimrc
это то, что я сделал с первой попытки, но я неправильно написал UltiSnips с Ultisnips ... ну, в конце концов, сработало!
источник
Я лично решил не использовать
<tab>
YouCompleteMe, а перемещаться по нему вручную.Итак, я добавил это в свой
.vimrc
:который просто отключает tabключ для YCM. Вместо этого вы используете клавиши перемещения (стрелки или
CTRL-N
/CTRL-P
) и выбираете запись с помощью CR. UltiSnips по умолчанию работает с tab.источник
Просто собрал ответы Майклслек, Джои Лю и решения, которые я нашел в этой теме, и vimrc этого парня , теперь у меня есть это, которое решило почти все проблемы.
источник
Хотя я знаю, что эта статья немного устарела, у меня есть собственная функция, которая немного более оптимизирована, чем приведенная выше:
Конечно, если вы просто сохраните настройки, которые предоставил Джои Лю, а затем просто воспользуетесь этой функцией, все будет работать идеально!
РЕДАКТИРОВАТЬ: Кроме того, я использую другую функцию для увеличения функциональности обратного перехода между YouCompleteMe и UltiSnips. Я покажу вам, что я имею в виду:
Затем просто поместите это в свой .vimrc:
Равно как
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
и ваш набор!источник
Я использую их оба вместе. По умолчанию привязок YouCompleteMe
<Tab>
и<Down>
выбрать следующий пункт завершения , а также<S-Tab>
и<Up>
для выбора предыдущего пункта завершения. Вы можете изменить привязки YouCompleteMe с помощью параметров g: ycm_key_list_select_completion и g: ycm_key_list_previous_completion . Обратите внимание, что имена этих параметров были недавно изменены, когда параметр был изменен с одной строки на список строк.источник
Я установил плагин UltiSnips после плагина YouCompleteMe, поэтому я подумал, что они конфликтуют, но на самом деле у меня было кое-что более мешающее:
Обязательно удалите это,
.vimrc
если оно есть.источник
Хотя в этом посте многие ответы работают нормально, я просто хочу сказать, что проблема вызвана конфликтом привязки ключей между YCM и UltiSnip, в то время как YCM по умолчанию поддерживает фрагменты UltiSnip, в
<tab>
качестве ключа выбора завершения используется триггер UltiSnip по умолчанию , поэтому Фрагменты UltiSnip не расширяются<tab>
. Дайте им разные привязки клавиш, чтобы решить проблему, я лично использую<c-n
и<c-p>
для YCM, и для UltiSnip по умолчанию<tab>
. Вы можете получить более подробную информацию сhelp youcompleteme
doc в vim.источник
Основываясь на ответе Зигфрида, я использую следующее, что кажется более естественным:
Я также использую
c-hjkl
привязки где-то еще (переключение с панели на другую), но это будет только в обычном режиме, поэтому нет проблем.источник
Я использую
;
для расширения UltiSnips, для меня это так здоровоисточник
\
потому что обнаружил, что не могу печатать;
в режиме вставки VimЯ использую
kj
. Вот что есть у меня.vimrc
:let g:UltisnipsExpandTrigger="kj"
,Редко случается, что я нахожу в нем слово
kj
. Если это так, я бы просто подождал пару секунд после вводаk
и этого типаj
.источник
Как упоминалось другими, сопоставление Cj с ultisnips отлично работает.
let g:UltiSnipsExpandTrigger="<c-j>"
Теперь, если вы пойдете немного дальше, установите xcape и используйте
xcape -e "Shift_L=Control_R|J"
Вы раскрываете всю мощь использования только клавиши Shift для utlitsnips.
источник