vim7.3 + zsh + iTerm2 on mavericks
以下是我的问题列表:
<C-q>
,<C-s>
,<A-Left|Right|..>
,<D-char>
。<A-char>
,<A-S-char>
,<C-A-char>
。<C-q>
和<C-s>
在iTerm2中,<C-q>
会删除整行,(<C-s>
会启动Fwd-i-search
)。
它不像开始/停止字符那样表现,所以我认为这个问题与stty start
和stty 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中映射它们?
答案 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代替。
<C-1>
与终端绑定任何密钥代码,例如:<C-A-char>
映射:
^[C-A-a