终端可以检测到

问题描述:

是否有可能为所述终端检测⇧移 + Enter↵Ctrl键 + Enter↵按键?终端可以检测到<Shift-Enter>或<Control-Enter>?

我想配置vim来完成使用这些序列的键映射,虽然它们在gvim中工作正常,但它们似乎无法在任何终端控制台中工作。

的奇怪的是,尽管Ctrl键 + Enter↵未在VIM检测,映射Enter↵ Esc键映射正常,但然后按下Ctrl键+Enter↵行为就像Enter↵

+0

你在终端中使用vim还是vi? – 2009-02-28 15:01:56

当按下<C-Enter>时,一些终端发送<NL>。这相当于发送<C-J>

要了解你的终端其实与<Shift-Enter><Ctrl-Enter><Enter>,去你的终端类型<Ctrl-V>(类似于SYKORA的建议对VIM),并输入你感兴趣的序列中

使用的是什么GNOME终端,我得到如下:

<Enter> : ^M 
<S-Enter> : ^M 
<C-Enter> : <NL> 

man ascii展望表明^M<CR>序列。

答案是它取决于终端,并且有一个简单的方法来检查。

Gvim运行自己的按键处理管理器,因此可以拿起所有的各种组合键。 Vim依靠特定的终端来传递特定的按键,所以键盘操作只与终端一样好或不同。

你可以找出你是否可以做你想做的事情的一种方法是使用密钥来找出插入的内容。例如类型:

:<C-V><C-Enter> 

ie实际上输入组合键Control-V后要按的组合。那做输入同样的事情后,即

:<C-V><Enter> 

如果它们产生相同的代码,那么终端解释两者组合键一样键码,你可以没有与终端搞乱约束力。

在我的终端(urxvt)中,Control-Enter,Shift-Enter和Enter(本身)都产生^ M字符,这意味着我不能映射一个而不映射另一个。对于Control-Tab和Control-I以及Control-Space和Control-012也是如此。编辑:使用C-Q而不是Windows的C-V。

+0

看来,在所述终端不同的码实际上产生: GVIM:产生^ M VIM:产生^ M GVIM:产生 VIM:产生^ @ 然而,我似乎无法正确映射^ @使用时: 地图^ @命令 – 2009-02-28 16:32:18

+0

您使用什么终端? – sykora 2009-02-28 17:47:34