我不是Ctrl-n
的粉丝,我希望能够使用Ctrl-Space
。我有什么想法可以做到吗?
答案 0 :(得分:33)
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
答案 1 :(得分:18)
我也喜欢Ctrl + Space贴图。
" Remap code completion to Ctrl+Space {{{2
inoremap <Nul> <C-x><C-o>
根据您的情况,您需要:
inoremap <Nul> <C-n>
答案 2 :(得分:8)
如果你想将它映射到Ctrl-E,它就像是:
inoremap <C-E> <C-N>
Ctrl - Space 的问题是大多数终端只会将其视为空格。我假设你在X里面使用了一些终端程序;如果你使用不同的东西,你必须自己提供相关的替换。
Bash的readline通常有 Ctrl - V 映射到“将下一个键视为文字”。所以按 Ctrl - V 然后在bash命令行的Home将在命令行中插入^[[H
或类似的东西,而不是去的开始线。尝试按 Ctrl - V 然后按 Ctrl - Space 。可能你会看到一个空间。
在这种情况下,当你按 Ctrl - <时,你将不得不愚弄xmodmap或编写你自己的/ usr / share / X11 / xkb / *文件来告诉X输出不同的东西KBD>空间。像Firefox这样的程序并不关心;他们检测出正在按下哪个基本键,并自行计算出正在按下的修改器。但是大多数基于终端的程序只会看到 Ctrl - Space 作为空格,除非你告诉X处理空格并且 Ctrl - 空格不同。
我怀疑你可以单独使用xmodmap进行此更改;你可能需要做更低级别的/ usr / share / X11 / xkb / *黑客攻击。这很复杂,我甚至不知道你是否首先使用X,所以我就把它留在那里。
某些终端如urxvt允许您指定自己的键绑定。像Firefox一样,他们可以判断它何时是一个空间,什么时候它是一个控制空间,即使你没有做任何特殊的配置X.所以当你按 Ctrl 时,你可以告诉urxvt输出“\ 033I_TYPED_CONTROL_SPACE_DAMMIT” - 空间。然后你可以告诉vim将那个映射到<C-N>
。
\0
(我将其重新映射到键盘上的其他位置)。在这种情况下,我上面描述的所有复杂性都是不必要的。我所说的将适用于想要使用更奇特的映射的人,例如 Ctrl -colon或 Alt - Space 。