vim ultisnips добавляет задержку при переключении влево в визуальном режиме

Недавно я установил плагин ultisnips на neovim, и у меня возникла проблема с ним:

Когда я включаю ultisnips, когда я нажимаю < в визуальном режиме, происходит задержка до тех пор, пока мои строки не будут смещены влево, но мой сдвиг вправо с использованием > работает мгновенно.

Если я запускаю :verbose map <, я вижу следующее

x  <nop>       * :call UltiSnips#SaveLastVisualSelection()<CR>gvs
        Last set from ~/.vim/plugged/ultisnips/autoload/UltiSnips/map_keys.vim line 64
s  <nop>       * <Esc>:call UltiSnips#ExpandSnippet()<CR>
        Last set from ~/.vim/plugged/ultisnips/autoload/UltiSnips/map_keys.vim line 62

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

Спасибо


person Farzad    schedule 19.09.2020    source источник
comment
Вы уверены, что не установили g:UltiSnipsExpandTrigger? По умолчанию <Tab>. Похоже, вы установили для себя значение <nop>.   -  person Jake Grossman    schedule 19.09.2020
comment
Вы совершенно правы, @JakeGrossman, у меня в настройках есть let g:UltiSnipsExpandTrigger = "<nop>" (я думаю, это было потому, что это мешало чему-то в coc), так это как-то связано с поведением, которое я вижу?   -  person Farzad    schedule 19.09.2020
comment
Да. Вы хотите отключить сопоставления для UltiSnips? В данном случае <nop> — это не действие, а само сопоставление. Таким образом, вы фактически сопоставили буквальные ключи <nop> с функцией UltiSnips.   -  person Jake Grossman    schedule 19.09.2020
comment
На самом деле теперь я помню: я добавил эту строку из-за этот комментарий GitHub потому что это мешало завершению табуляции coc. Есть ли у вас какие-либо предложения о том, что я могу сделать? И да, я думаю, что могу подтвердить, что если я удалю эту строку из своих настроек, сдвиг влево, кажется, будет работать нормально, но тогда я не смогу использовать TAB для навигации по меню завершения coc ????   -  person Farzad    schedule 20.09.2020
comment
Я попытался поместить строку в свой Vimrc, и при запуске выдает ошибку, говоря E117: Unknown function: UltiSnips#map_keys#MapKeys ????   -  person Farzad    schedule 20.09.2020
comment
Вы правы, я особо не смотрел. На самом деле вы можете просто установить любое сопоставление, которое вы не используете, проверьте :h key-codes, чтобы увидеть ваши варианты.   -  person Jake Grossman    schedule 20.09.2020


Ответы (1)


Вы установили g:UltiSnipExpandTrigger="<nop>".

Строка 62 из ultisnips/blob/master/autoload/UltiSnips/map_keys.vim:

exec "snoremap <silent> " . g:UltiSnipsExpandTrigger . " <Esc>:call UltiSnips#ExpandTrigger()<cr>"

Вы можете видеть, что на самом деле это не отключает сопоставление для g:UltiSnipExpandTrigger. Вместо этого литеральные ключи nop сопоставляются с <Esc>:call UltiSnips#ExpandTrigger()<cr>.

Vim ждет, когда вы наберете , чтобы увидеть, нажмете ли вы затем nop›< /кбд>. Подождав некоторое время, только тогда он сдвинет ваш выбор влево (насколько долго зависит от значения 'timeoutlen').

Что вам нужно сделать, так это установить g:UltiSnipExpandTrigger на другой ключ. Если вы хотите отключить его, вы можете сопоставить его с функциональной клавишей между 13 и 19 (вероятно, у вас ее нет на клавиатуре):

let g:UltiSnipExpandTrigger = "<F13>"
person Jake Grossman    schedule 21.09.2020