Почему не работает список доступных фрагментов UltiSnips? - PullRequest
0 голосов
/ 24 сентября 2019

Я хотел бы перечислить доступные фрагменты, используя простое нажатие клавиши.Однако я не могу этого сделать.Вот мои настройки UltiSnips:

let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"

let g:UltiSnipsListSnippets="<c-;>"

let g:UltiSnipsSnippetsDir="~/.vim/ultisnips"
let g:UltiSnipsEditSplit="vertical"

"Open UltiSnips edit function
nmap <leader>se :UltiSnipsEdit<cr>

У меня установлено vim-snippets и несколько моих собственных фрагментов.

Ничего не происходит, когда я нажимаю CTRL-;.Я пытался изменить отображение на различные нажатия клавиш, но ничего не происходит.Я думал, что какой-то другой плагин, который я использую, будет мешать выбранному нажатию клавиши, поэтому я несколько раз менял его и до сих пор не получил список.Независимо от того, какие настройки у меня есть, я не вижу список фрагментов.

Какую магию я должен вызвать, чтобы увидеть список фрагментов?

1 Ответ

0 голосов
/ 25 сентября 2019

Это тоже не работает для меня!

Но, копаясь в документе для Ultisnips, я нашел альтернативу: h UltiSnips#SnippetsInCurrentScope.В этом разделе справки приведен пример функции GetAllSnippets(), которая возвращает list фрагментов, доступных для текущего буфера, и выглядит так:

function! GetAllSnippets()
  call UltiSnips#SnippetsInCurrentScope(1)
  let list = []
  for [key, info] in items(g:current_ulti_dict_info)
    let parts = split(info.location, ':')
    call add(list, {
      \"key": key,
      \"path": parts[0],
      \"linenr": parts[1],
      \"description": info.description,
      \})
  endfor
  return list
endfunction

Я не уверен, что вам нужнопосле списка фрагментов доступны.Если вы хотите перейти к определению фрагмента, вы можете сделать это с помощью модифицированной версии функции в документе ниже.Это заполняет и открывает список быстрых исправлений:

function! GetAllSnippets()
  call UltiSnips#SnippetsInCurrentScope(1)
  let list = []
  for [key, info] in items(g:current_ulti_dict_info)
    let parts = split(info.location, ':')
    call add(list, {
      \"text": key,
      \"filename": parts[0],
      \"lnum": parts[1],
      \"context": info.description,
      \})
  endfor
  call setqflist([], ' ', { 'title': 'Snippets', 'items' : list})

  " Open Quickfix list as soon as it is populated
  copen
endfunction

В качестве альтернативы, если вы используете fzf-vim , вы можете использовать команду :Snippets для вывода списка, нечеткого поиска и вызовафрагмент.

РЕДАКТИРОВАТЬ:

Я сейчас выгляжу глупо!: D Решение было прямо здесь в h g:UltiSnipsListSnippets:

Имейте в виду, что некоторые эмуляторы терминала не отправляют <c-tab> (и другие, например <c-h>) в работающую программу.

Похоже, мой терминал тоже блокировал <C-tab> и <C-;>.Переназначен на использование <C-m>, и он все еще не работает.Это потому, что это отображение режима вставки , и я пытался в обычном режиме все это время!

...