10

我正在为 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。它现在工作正常。

4

2 回答 2

14

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

当您对 vim 映射有疑问时。

首先检查:verbose inoremap

如果您知道有问题的键,则使用指定的键进行操作,例如:verbose inoremap <esc>.

于 2012-11-30T00:09:23.017 回答
9

这为我修复了它,在您的 ~/.vimrc 或 ~/.config/nvim/init.vim 文件中添加:

let g:AutoClosePreserveDotReg = 0
于 2018-02-12T22:13:44.367 回答