Vim 在if on脚本中有两条语句是错误的吗?

Vim 在if on脚本中有两条语句是错误的吗?,vim,Vim,我最近决定修改我的.vimrc 按照说明,我在一个名为ultisnips\u tab\u hack.vim的文件中添加了一个小片段,该文件源于我的.vimrc 该片段的最后一行是: inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>" 这与此相同,只是如果弹出菜单不可见,它还将调用vim endwise函数

我最近决定修改我的
.vimrc

按照说明,我在一个名为
ultisnips\u tab\u hack.vim
的文件中添加了一个小片段,该文件源于我的
.vimrc

该片段的最后一行是:

inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
这与此相同,只是如果弹出菜单不可见,它还将调用
vim endwise
函数来决定是否插入其他内容。此外,endwise映射被禁用,因此它不会与我们的自定义映射冲突

因此,我试图制定一个解决方案,无论是否加载了
vim endwise
(因为我只想在ruby文件上加载它)。我尝试的是:

if exists("*EndwiseDiscretionary")
  let g:endwise_no_mappings = 1
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif
此外,还插入了以下文本:
pumvisible()?“
而不是回车

然而,更让我惊讶的是,无论是否加载了
vim endwise
,下面的代码都没有导致任何错误

let g:endwise_no_mappings = 1
if exists("*EndwiseDiscretionary")
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif
按计划工作:

let g:endwise_no_mappings = 1
if exists("*EndwiseDiscretionary")
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif
设g:endwise\u no\u映射=1
如果存在(“*EndWiseDiscreative”)
inoremap pumvisible()?“\=ExpandSnippetorCarriagereReturn()\”:“\\=EndWiseDiscreative()\”
其他的
inoremap pumvisible()?“\=ExpandSnippetOrCarriageReturn()\”:“\”
恩迪夫

两个备选方案的
:imap
输出是否有任何差异?不应该有差异;你确定你没有意外输入错误吗?不幸的是,没有,当我将
inoremap
s更改为
imap
s时,结果是一样的):我还通过直接从这个粘贴到文件并尝试两种方法。仍然得到相同的结果。谢谢你告诉我我没有遗漏一些明显的东西,哈哈哈。两种方法的
:imap
的输出是否有任何差异?应该没有差异;你确定你没有意外地输入错误吗?不幸的是,没有,当我更改时,结果是一样的ed the
inoremap
s to
imap
s):我还通过将其直接粘贴到文件中并尝试两种方法来确保没有输入错误。仍然得到相同的结果。感谢您告诉我,我没有遗漏一些明显的内容,哈哈哈。
let g:endwise_no_mappings = 1
if exists("*EndwiseDiscretionary")
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif
if exists("*EndwiseDiscretionary")
  let g:endwise_no_mappings = 1
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif
let g:endwise_no_mappings = 1
if exists("*EndwiseDiscretionary")
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>\<C-R>=EndwiseDiscretionary()\<CR>"
else
  inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>"
endif