Vim 重新映射 F10 键

Asw*_*and 3 vim freebsd

我在 FreeBSD 上使用 Vim 7.3。我通过 Putty 连接到这台机器。在 Vim 上工作时,我无法重新映射F10键来做我想做的事情。在我的 .vimrc 中,我做了以下事情:

nmap <F10> :!ls<CR>
Run Code Online (Sandbox Code Playgroud)

然后我做了“source $MYVIMRC”来加载 .vimrc 中的更改。当我F10在此之后按下时,它会打印 ^[[21~ 而不是执行地图。我尝试了所有的组合,noremap但没有任何效果。

将其重新映射到其他功能键不是一种选择,因为它们被映射用于其他用途。

仅供参考,在Putty 配置选项中,在终端-> 键盘下,我已将“功能键和键盘”选项设置为“Linux”。

有什么建议可以让它发挥作用吗?

Lau*_*ves 5

听起来您的 termcap/terminfo 和/或$TERM您正在使用的值正在阻止 Vim 将您的终端为 F10 发送的字符序列识别为 F10。

简单的解决方法是映射字符序列。在您的 .vimrc 中,输入以下内容:

nmap <CTRL-V><F10> :!ls<CR>
Run Code Online (Sandbox Code Playgroud)

<CTRL-V><F10>按下 CTRL-V 后跟 F10在哪里。这将导致类似于^[[21~出现在您的缓冲区中。没关系,这个映射应该可以工作(至少在那个终端上)。

“正确”的解决方法是更改$TERMtermcap 或 terminfo 数据库的值,以便 Vim 知道它^[[21~是 F10。设置$TERMxterm可能有效。