【问题标题】:Vim pumvisible() call putting in random textVim pumvisible() 调用放入随机文本
【发布时间】: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 &lt;esc&gt;的输出

i &lt;Esc&gt; *@pumvisible() ? '&lt;C-E&gt;' : '&lt;C-R&gt;=&lt;SNR&gt;32_FlushBuffer()&lt;CR&gt;pumvisible() ? "\&lt;C-E&gt;" : "\&lt;Esc&gt;"'

i &lt;Esc&gt; * pumvisible() ? "\&lt;C-E&gt;" : "\&lt;Esc&gt;"

我在 Windows 8 上使用 Vim 7.3。

解决方案

自动关闭插件干扰了映射。我已经在此处编写了删除它的步骤:http://crossplatform.net/dev/vim-spf13-writes-random-characters-when-pressing-escape.html。现在可以正常使用了。

【问题讨论】:

  • 你的 Vim :version 和操作系统是什么?你已经完成:BundleInstall 安装包中的插件了吗?您是否安装了任何其他插件或进行了其他更改?
  • :inoremap &lt;esc&gt; 会显示什么消息?
  • @mattn:我添加了 :inoremap 的输出。捆绑安装是由 spf13 附带的批处理脚本完成的。它安装了 .vim.bundles 文件,并且需要一段时间。之后我没有安装任何其他东西。
  • 看来你已经有了一些情感插件。很可能,它有函数s:FlushBuffer。检查:verbose inoremap &lt;ESC&gt;
  • @mattn 你是正确的。这是自动关闭插件。我删除了它,一切都恢复正常了。

标签: vim


【解决方案1】:

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

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

首先检查:verbose inoremap

如果您知道有问题的键,请使用指定的键,例如:verbose inoremap &lt;esc&gt;

【讨论】:

    【解决方案2】:

    这为我解决了问题, 在你的 ~/.vimrc 或 ~/.config/nvim/init.vim 文件中添加:

    let g:AutoClosePreserveDotReg = 0
    

    【讨论】:

    • 这是给我的!您能否添加更多关于为什么会出现此问题的信息?
    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多