2010-02-15 53 views

回答

7

如果你想映射它,比方说,按Ctrl-E,它会是这样的:

按Ctrl
inoremap <C-E> <C-N> 

问题 - 空间的是,大多数终端将只看到它作为一个空间。我假设你在X中使用了一些终端程序;如果你使用不同的东西,你必须自己提供相关的替代品。

bash的readline的通常有按Ctrl - V映射到 “对待下一个关键的文字。”所以按Ctrl - V然后主页在bash命令行将插入^[[H或类似的东西在命令行上,而不是去行的开始。尝试按Ctrl - V然后Ctrl - 空间。大概你会看到一个空间。

在这种情况下,你必须与xmodmap来愚弄或者自己写的/ usr /共享/ X11/XKB/*文件告诉X到输出不同的东西,当你按下Ctrl键 - 空间。像Firefox这样的程序不在乎;他们检测哪个基本键被按下,并找出自己正在按什么修饰符。但大多数基于终端的节目只会看到按Ctrl - 空间的空间,除非你告诉X治疗空间和按Ctrl - 空间不同。

我怀疑你可以单独使用xmodmap进行此更改;您可能需要执行较低级别的/ usr/share/X11/xkb/*黑客行为。这很复杂,我甚至不知道你是否首先使用X,所以我只是把它留在那里。

有些终端如urxvt让你指定你自己的键盘绑定。 空间 - 如Firefox,当它是一个空间,当它是一个控制航天即使没有你做什么特别的配置X.所以,你可以告诉urxvt输出“\ 033I_TYPED_CONTROL_SPACE_DAMMIT”当你按下Ctrl键他们可以告诉。然后你可以告诉vim将映射到<C-N>

编辑:我忘了Ctrl-Space用于输出\0(我重新映射了键盘上的其他位置)。在这种情况下,上面描述的所有复杂性都是不必要的。我所说的将适用于想要使用更奇特的映射的人,如Ctrl -colon或Alt - Space

+1

尽管如此,有人会努力描述这里发生的事情。其他答案没有说明为什么他们的解决方案工作:-) – JepZ 2017-10-06 08:34:42

18

我也喜欢Ctrl + Space映射。

" Remap code completion to Ctrl+Space {{{2 
inoremap <Nul> <C-x><C-o>

你的情况,你想:

inoremap <Nul> <C-n>
+7

如果你在gvim,你会想要,而不是。 – tghw 2010-09-24 15:22:51

+0

'<[email protected]>'用于某些终端的C-Space(我认为是PuTTY),我猜与C-相同@ – 2015-06-01 08:59:46

29
if has("gui_running") 
    " C-Space seems to work under gVim on both Linux and win32 
    inoremap <C-Space> <C-n> 
else " no gui 
    if has("unix") 
    inoremap <Nul> <C-n> 
    else 
    " I have no idea of the name of Ctrl-Space elsewhere 
    endif 
endif 
+3

注意:您可能必须使用'has(“gui_running”)',因为'has (“gui”)'只需返回,如果你的vim是用'gui'选项编译的,而不是你现在正在使用它。 – Dogbert 2011-04-16 17:05:04

+0

它没有直接连接到unix。 ''由终端仿真器翻译为'',所以如果你发现一个终端仿真器在Windows上执行相同的工作,它也可以工作。而''是**不是''的名字*,出于同样的原因' [B'不是''的名字,它只是当你按下' '。 – ZyX 2012-02-28 18:21:17