mac OSX上的vim键盘映射问题

时间:2014-05-12 10:43:14

标签: macos vim iterm2

1.Env

vim7.3 + zsh + iTerm2 on mavericks

2。映射问题

以下是我的问题列表:

  1. 我的vim无法获得一些快捷方式:<C-q><C-s><A-Left|Right|..><D-char>
  2. 我无法在mac中映射一些特殊键,例如<A-char><A-S-char><C-A-char>
  3. <C-q><C-s>

    在iTerm2中,<C-q>会删除整行,(<C-s>会启动Fwd-i-search)。
    它不像开始/停止字符那样表现,所以我认为这个问题与stty startstty stop无关。 但是在我将其添加到~/.zshrc之后,我惊讶地发现<C-q><C-s>的地图在Vim中效果很好。同时它没有&# 39;改变iTerm2中<C-q><C-s>的行为(我不知道为什么)。

    stty start undef
    stty stop undef
    
    mac 中的

    <A-char>问题

    在mac中,<A-char>的映射不会直接在mac中运行。

    :inoremap <A-u> type some string A-u
    :inoremap <A-p> type some string A-p
    :inoremap
    i  õ           * type some string A-u
    i  ð           * type some string A-p
    

    据我所知,mac中的<A-char>,点击<A-u>只会发出声音警报。点击<A-p>会打印π。我发现π的地图效果很好。

    :inoremap π type some string A-p
    

    是否可以在vim中映射<A-u>

    另一个复杂的问题是<A-S-char><C-A-char>

    是否可行
    :map <A-S-p> not work
    :map ∏ works well(A-S-p will print `∏`)
    
    :map <C-A-p> not work
    :map <C-π> still not work
    
    :map <C-S-p> do work
    

    上面提到的另一个复杂问题是,是否可能映射<C-A-char>

    <A-Left|Right|UP|Down

    在iTerm2中,点击<A-Left|...会导致(iTerm2不会为它们绑定任何快捷方式。):

    <A-Up> print 'A' with a sound alert.
    <A-Down> print 'B' with a sound alert.
    <A-Left> print 'D' with a sound alert.
    <A-Down> print 'C' with a sound alert.
    

    在vim中,<A-Left|...与插入模式,普通模式,视觉模式和Ex模式等中的<Left><Right><Up><Down>相同。

    <D-char>

    关于<D-char>的一些关键字是iTerms自己的热键,例如: 1. <D-q>将退出iTerm2 1. <D-w>将关闭iTerm2中的当前标签

    另一方面,<D-s>等其他键不是热键,也不在vim和terminal中打印任何字符。是否可以在vim中映射它们?

1 个答案:

答案 0 :(得分:1)

地图<C-1>

Vim不提供密钥代码<C-1>,但您可以使用其他未使用的vim密钥代码

可以使用的潜在未使用的Vim密钥代码包括:

<F13> to <F37>
<S-F13> to <S-F37>
<xF1> to <xF4>
<S-xF1> to <S-xF4>

键入:set termcap以查看未使用的vim密钥代码。

如果要使用热键Ctrl+1,请先在终端首选项中将其映射到Esc Sequence(例如^[C-1),然后将此终端键码与未使用的vim键码绑定,例如{{1} },<F13><xF1>

<t_bc>
  

有关详细信息,请参阅fastcodes in vim


地图"bind vim keycode `<F13>` to terminal keycode `^[C-1` :set <F13>=^[C-1 :imap <F13> Input some characters

默认情况下,<A-char>会在mac中打印特殊字符。通常,您可以映射此特殊字符。或者您可以在终端中将<A-char>重新映射为<Alt>

地图Meta<C-A-char>

<D-char>相同,如果您使用termainal vim,则可以使用fastcodes代替。

  1. <C-1>与终端绑定任何密钥代码,例如:<C-A-char>
  2. 设置vim fastkeycodes并进行映射:
  3. 映射:

    ^[C-A-a