vim ultisnips在可视模式下向左移动时会增加延迟

问题描述

我最近在neovim上安装了ultisnips插件,但遇到了问题:

启用ultisnips时,在可视模式下按<时,会有一段延迟,直到我的行向左移动,但使用>的向右移动会立即起作用。 / p>

如果我运行: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

从我所见,这些绑定来自片段文件,它们不是我的映射,所以我想知道是否有办法解决此问题。

谢谢

解决方法

您已设置g:UltiSnipExpandTrigger="<nop>"

ultisnips/blob/master/autoload/UltiSnips/map_keys.vim的第62行:

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

您可以看到,这实际上并没有禁用g:UltiSnipExpandTrigger的映射。而是将文字键 n o p > 映射到{{ 1}}。

键入 后,Vim正在等待,看是否要按 n o p > 。等待一段时间后,才会将您的选择向左移动(多久取决于<Esc>:call UltiSnips#ExpandTrigger()<cr>的值)。

您需要将'timeoutlen'设置为其他键。如果要禁用它,可以将其映射到13到19之间的功能键(您的键盘上可能没有):

g:UltiSnipExpandTrigger