我的 .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
正是这样的缩进。
最佳答案
这与终端处理按键的方式有关。当您按下某个键时,先按 C-v,然后再按该键,您始终可以看到实际发送到程序的内容。这在 Vim 之外也适用。
解决方案:
1 - 在你的 vimrc 中输入 nnoremap
映射的一部分,末尾有一个空格。
2 - 按 C-v,然后按 S-F3。在我的机器上打印 ^[[25~
,这是您的终端发送给 Vim 的内容。
3 - 在输入 :up<cr>
之前再添加一个空格.
它应该看起来像这样:nnoremap ^[[25~ :up<cr>
关于vim - <S-F3> 的映射未按应有的方式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12813126/