2010-02-15 17 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