Vim pumvisible() 调用放入随机文本

标签 vim

我正在为 Vim 使用 spf13 包。但是,每当我输入一些文本并按转义键时,就会在其中附加一些奇怪的字符。

例如,如果我输入这个并按下退出键,

hello

我明白了:
hellopumvisible() ? "\" : "\

我的 .vimrc 文件上有一个映射,内容如下,我认为这可能是负责任的:
" some convenient mappings
inoremap <expr> <Esc>      pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <C-d>      pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<C-d>"
inoremap <expr> <C-u>      pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<C-u>"

我猜它取自 http://vim.wikia.com/wiki/Improve_completion_popup_menu .但出于某种原因,这给了我奇怪的行为。有什么建议吗?

编辑:
这是 :inoremap <esc> 的输出
i <Esc> *@pumvisible() ? '<C-E>' : '<C-R>=<SNR>32_FlushBuffer()<CR>pumvisible() ? "\<C-E>" : "\<Esc>"'i <Esc> * pumvisible() ? "\<C-E>" : "\<Esc>"
我在 Windows 8 上使用 Vim 7.3。

解决方案

自动关闭插件会干扰映射。我在这里写了删除它的步骤:http://crossplatform.net/dev/vim-spf13-writes-random-characters-when-pressing-escape.html .它现在工作正常。

最佳答案

可能,这可能是常见问题解答。这将对其他人有所帮助。所以我从上面的评论行复制了答案。

当您遇到有关 vim 映射的问题时。

查询 :verbose inoremap一开始。

如果你知道有问题的键,那就用指定的键来做,例如:verbose inoremap <esc> .

关于Vim pumvisible() 调用放入随机文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621845/

相关文章:

ruby - ruby 插件会使启动 vim 很慢吗?

延迟后Vim在状态栏中显示

c - 在 Vim 插入模式下按下 Tab 键后得到的 Tab 数

vim - VIM 中的长行自动换行

bash - 如何在 vimscript 中使用 sleep 仅用于命令行栏?

vim - 为什么 vim 中的某些命令需要冒号而有些则不需要?

vim - 如何在 vim 中为复合文件类型命名 ftplugin 文件名?

vim - Vim 使用通配符 .*

vim - 在 Vim 中关闭下一个窗口

vim - 通过 Lua 启动 Vim