【发布时间】:2018-02-13 16:55:05
【问题描述】:
我正在为 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
:version和操作系统是什么?你已经完成:BundleInstall安装包中的插件了吗?您是否安装了任何其他插件或进行了其他更改? -
:inoremap <esc>会显示什么消息? -
@mattn:我添加了 :inoremap
的输出。捆绑安装是由 spf13 附带的批处理脚本完成的。它安装了 .vim.bundles 文件,并且需要一段时间。之后我没有安装任何其他东西。 -
看来你已经有了一些情感插件。很可能,它有函数
s:FlushBuffer。检查:verbose inoremap <ESC>。 -
@mattn 你是正确的。这是自动关闭插件。我删除了它,一切都恢复正常了。
标签: vim