[英]For the Vim editor, how do I map a function key in .vimrc on Mac OS X?
[英]vim on mac os X function key mapping not working
我最近开始使用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 .....
我还需要做些什么让它按预期工作吗?
另外,我一直在使用曝光作为我的配色方案,并尝试在Mac中使用相同的配色方案。 似乎正在从.vimrc读取scheme命令,但颜色仍然是默认颜色。 即使.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
如果您需要验证这些转义序列是否与您的终端匹配或设置自己的转义,这些问题的答案是有帮助的:
它可能取决于终端模拟器的行为一致(狂笑),但@Mark Carey的建议对我来说还不够(我希望它如此简单)。 使用OS X上的iTerm2,我已经为xterm-256color
和tmux配置了screen-256color
,而功能映射仍然不起作用。 因此,如果来自iTerm2的这些序列符合xterm,那么has('mac')
可能是不必要的,我还没有检查过,所以现在把它留在我自己的配置中。
您可能也想要一些imap
版本。 请注意,您不应该使用noremap
变体,因为您确实希望这些映射级联(以触发您已映射的任何<Fx>
)。
看到这个答案: https : //stackoverflow.com/a/10524999/210923
本质上将我的TERM类型更改为xterm-256color允许我正确映射功能键。
我在我的vimrc中使用以下内容进行复制和粘贴
if &term =~ "xterm.*"
let &t_ti = &t_ti . "\e[?2004h"
let &t_te = "\e[?2004l" . &t_te
function XTermPasteBegin(ret)
set pastetoggle=<Esc>[201~
set paste
return a:ret
endfunction
map <expr> <Esc>[200~ XTermPasteBegin("i")
imap <expr> <Esc>[200~ XTermPasteBegin("")
cmap <Esc>[200~ <nop>
cmap <Esc>[201~ <nop>
endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.