我正在为Vim使用spf13包.但是,每当我输入一些文本并按下escape时,会有一些奇怪的字符被附加到它上面.
例如,如果我键入此并按下escape,
hello
Run Code Online (Sandbox Code Playgroud)
我明白了:
hellopumvisible() ? "\" : "\
Run Code Online (Sandbox Code Playgroud)
我的.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>"
Run Code Online (Sandbox Code Playgroud)
我猜它来自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.
autoclose插件干扰了映射.我在这里写了删除它的步骤:http://crossplatform.net/dev/vim-spf13-writes-random-characters-when-pressing-escape.html.它现在工作正常.
mat*_*ttn 12
也许,这可能是FAQ.这对其他人有帮助.所以我复制了上面评论专栏的答案.
检查:verbose inoremap第一个.
如果您知道有问题的键,则使用指定的键进行操作:verbose inoremap <esc>.
这可以为我解决,在您的〜/ .vimrc或〜/ .config / nvim / init.vim文件中添加:
let g:AutoClosePreserveDotReg = 0
Run Code Online (Sandbox Code Playgroud)