我最近开始使用 Mac OS X Lion 系统并尝试在终端中使用 Vim。我以前在我的 Ubuntu 系统中有一个 .vimrc 文件,并将 F2 和 F5 键映射到 pastetoggle 并运行 python 解释器。这是我的两行:
set pastetoggle=<F2>
map <buffer> <F5> :wa<CR>:!/usr/bin/env python % <CR>
它在 Ubuntu 中运行良好,但在 Mac 中不再有效。 (上面两行在我家目录下的 .vimrc 中。)我在我的偏好中关闭了 Mac 特定的功能,所以功能键没有被用于音量之类的东西。现在按 F5 似乎将所有字母大写直到下一个单词,而 F2 似乎删除下一行并插入 O .....
我还需要做些什么才能让它按预期工作?
此外,我一直使用solarized 作为我的配色方案,并尝试在Mac 中使用相同的配色方案。似乎正在从 .vimrc 读取方案命令,但颜色仍然是默认颜色。即使 .vim/colors 文件和以前一样。这是我需要修复的相关错误吗?也许在我自己的之后正在读取另一个设置文件? (我寻找 _vimrc 和 .gvimrc,都不存在。)
谢谢!
最佳答案
我终于通过添加这样的映射来使我的函数映射工作:
if has('mac') && ($TERM == 'xterm-256color' || $TERM == 'screen-256color')
map <Esc>OP <F1>
map <Esc>OQ <F2>
map <Esc>OR <F3>
map <Esc>OS <F4>
map <Esc>[16~ <F5>
map <Esc>[17~ <F6>
map <Esc>[18~ <F7>
map <Esc>[19~ <F8>
map <Esc>[20~ <F9>
map <Esc>[21~ <F10>
map <Esc>[23~ <F11>
map <Esc>[24~ <F12>
endif
如果您需要验证这些转义序列是否与您的终端匹配或设置您自己的转义序列,则这些问题的答案很有帮助:
mapping function keys in vim
Binding special keys as vim shortcuts
这可能取决于终端模拟器的行为一致(大笑),但@Mark Carey 的建议对我来说还不够(我希望它如此简单)。在 OS X 上使用 iTerm2,我已经为
xterm-256color
配置了它和 tmux 用于 screen-256color
,并且函数映射仍然不起作用。所以has('mac')
如果来自 iTerm2 的这些序列符合 xterm 标准,则可能是不必要的,我还没有检查,所以现在将它留在我自己的配置中。你可能想要一些
imap
版本也是如此。请注意,您不应该使用 noremap
变种,因为你做 希望这些映射级联(触发您映射 <Fx>
到的任何内容)。
关于macos - mac os X 上的 vim 功能键映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373710/