繁体   English   中英

vim on mac os X功能键映射不起作用

[英]vim on mac os X function key mapping not working

我最近开始使用Mac OS X Lion系统并试图在终端中使用Vim。 我以前在我的Ubuntu系统中有一个.vimrc文件,并将F2F5键映射到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

如果您需要验证这些转义序列是否与您的终端匹配或设置自己的转义,这些问题的答案是有帮助的:

在vim中映射功能键
将特殊键绑定为vim快捷键

它可能取决于终端模拟器的行为一致(狂笑),但@Mark Carey的建议对我来说还不够(我希望它如此简单)。 使用OS X上的iTerm2,我已经为xterm-256color和tmux配置了screen-256color ,而功能映射仍然不起作用。 因此,如果来自iTerm2的这些序列符合xterm,那么has('mac')可能是不必要的,我还没有检查过,所以现在把它留在我自己的配置中。

您可能也想要一些imap版本。 请注意,您不应该使用noremap变体,因为您确实希望这些映射级联(以触发您已映射的任何<Fx> )。

关于你的colorscheme / solarized问题 - 确保你设置终端(或我喜欢的iTerm2)与完全曝光的配置文件中提供的曝光配置文件,您可以在这里下载: http ://ethanschoonover.com/solarized/files/solarized .zip

然后,您可能遇到的唯一其他问题是确保在使用screen或tmux时设置$ TERM xterm-256colorscreen-256color

您可以查看我的dotfiles进行工作设置,但不要忘记设置Terminal / iTerm颜色配置文件作为第一步。

看到这个答案: 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

我从这里得到它https://stackoverflow.com/a/7053522

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM