Vim UltiSnips 插件在插入模式下重新映射 <CR>(回车键),即使我不在片段中

标签 vim ultisnips

每当我在插入模式下按 Enter 键时,什么也没有发生,这很烦人,您可能会想象到。

我已经用 :imap 检查了映射结果是 UltiSnips map <CR> :

i  <CR>        * <C-R>=UltiSnips#ExpandSnippetOrJump()<CR>

如果我 iunmap <CR> ,我的回车键再次开始工作,但 UltiSnips 停止工作(我想这是有道理的)。

我没有使用任何预制片段,我只有一个 tex.snippets 文件在工作。我已尝试删除文件中的所有内容,以检查我的代码段定义是否有问题。

所有文件类型都会出现此行为。

这是我的 UltiSnips 配置:

let g:UltiSnipsSnippetsDir         = '~/.vim/ultisnips'
let g:UltiSnipsSnippetDirectories  = [$HOME.'/.vim/ultisnips']

let g:UltiSnipsExpandTrigger       = '<C-m>'
let g:UltiSnipsJumpForwardTrigger  = '<C-m>'
let g:UltiSnipsJumpBackwardTrigger = '<C-n>'

let g:UltiSnipsEditSplit           = "vertical"

为什么 UltiSnips 映射 <CR>为了它的功能?

感谢您对此提供的任何帮助,因为这使我无法使用 UltiSnips。

最佳答案

那是因为 <CTRL-M><CR> 相同(输入),请参阅 :help keycodes

notation    meaning         equivalent  decimal value(s)    ~
-----------------------------------------------------------------------
...
<Tab>       tab             CTRL-I      9   *tab* *Tab*
                                            *linefeed*
...
<CR>        carriage return CTRL-M      13  *carriage-return*
<Return>    same as <CR>                    *<Return>*
<Enter>     same as <CR>                    *<Enter>*
<Esc>       escape          CTRL-[      27  *escape* *<Esc>*
...

类似的,比如CTRL-I表示 tabCtrl-[表示 Esc .所以你实际上是这样配置的 - let g:UltiSnipsExpandTrigger = '<C-m>' .

关于Vim UltiSnips 插件在插入模式下重新映射 <CR>(回车键),即使我不在片段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239301/

相关文章:

vim - 将当前行移动到上一行的末尾

Vim Ultisnips - 如何移动到下一个占位符或制表符?

vim - 在 Vim 中用递增的值搜索和替换

Vim:替换行尾

vim - UltiSnips 不会自动重新加载对片段文件的更改

javascript - 您如何在 VIM 代码段中将这个词大写?

vim 8、UltiSnips 和 coc-ultisnips : `${VISUAL}` does nothing

延迟后Vim在状态栏中显示

emacs - 为自动缩进代码编写自定义函数有什么好的*抽象*?