vim - <S-F3> 的映射未按应有的方式运行

标签 vim

我的 .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/

相关文章:

vim - Windows 7 中的 NerdTree 复制命令

Vim 编辑 *diff 文件*,自动更新 diff 范围

variables - Vim变量,expandtab和noexpandtab,一个存在一个不存在?

regex - Vim 正则表达式仅替换日期时间

vim BufRead下设置错误

vim:将变量分配给 ex 调用的返回值?

vim - 如果尝试在 Vim 中打开已打开的文件,如何跳转到选项卡

Vim 选择多行的末尾( block 模式,但结束列不同)

Qt Creator 标签文件

vim - 为什么在 Vim 中查看 hex 与 hexdump 结果不同?