2

我的.vimrc文件中有这个映射(适用于所有文件类型)

nnoremap <F3> a<C-R>=strftime("%a %d %b %Y %r")<CR><Esc>
inoremap <F3> <C-R>=strftime("%a %d %b %Y %r")<CR>

我的python.vim (位于after/ftplugin/有这个:

nnoremap <S-F3> :up<cr>
inoremap <S-F3> <esc>:up<cr>a

的映射F3在正常和插入模式下都按预期工作。但是对于Shift+F3映射,它应该保存当前文件。但它在当前行上方插入了一些意想不到的字符,即1;2R. 我不知道它代表什么。


更新

这是的输出:verbose nmap <S-F3>

n  <S-F3>      * :up<CR>
        Last set from ~/.vim/after/ftplugin/python.vim

正是那个缩进。

4

1 回答 1

4

这与终端处理按键的方式有关。通过按 Cv 然后按 键,您始终可以看到实际发送到程序的内容。这也适用于 Vim 之外。

解决方案:

1 - 在您的 vimrcnnoremap中键入映射​​的一部分,最后有一个空格。

2 - 按 Cv,然后按 S-F3。在我的机器上打印 ^[[25~,这是您的终端发送给 Vim 的内容。

3 - 输入前多加一个空格:up<cr>

它应该如下所示:nnoremap ^[[25~ :up<cr>

于 2012-10-11T20:12:41.397 回答