Geo*_*Geo 37 vim autocomplete key-bindings
我不是Ctrl-n
很喜欢,我希望能够使用Ctrl-Space
.我有什么想法可以做到这一点?
小智 34
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
Run Code Online (Sandbox Code Playgroud)
Pie*_*tte 19
我也喜欢Ctrl + Space贴图.
" Remap code completion to Ctrl+Space {{{2
inoremap <Nul> <C-x><C-o>
Run Code Online (Sandbox Code Playgroud)
在你的情况下你想要:
inoremap <Nul> <C-n>
Run Code Online (Sandbox Code Playgroud)
如果你想将它映射到例如Ctrl-E,它会是这样的:
inoremap <C-E> <C-N>
Run Code Online (Sandbox Code Playgroud)
问题是Ctrl- Space大多数终端只会将其视为一个空间.我假设你在X里面使用了一些终端程序; 如果你使用不同的东西,你必须自己提供相关的替代品.
Bash的readline通常具有Ctrl- V映射为"将下一个键视为文字".所以按Ctrl- V然后在bash命令行的Home将在命令行上插入^[[H
或类似的东西,而不是去行的开头.尝试按Ctrl- V然后Ctrl- Space.可能你会看到一个空间.
在这种情况下,你必须与xmodmap来愚弄或者自己写的/ usr /共享/ X11/XKB/*文件告诉X到输出不同的东西,当你按下Ctrl- Space.像Firefox这样的程序并不关心; 他们检测出正在按下哪个基本键,并自己弄清楚正在按下哪些修改器.但大多数基于终端的程序只会看到Ctrl- Space作为一个空间,除非你告诉X对待空间和Ctrl- Space不同.
我怀疑你可以单独使用xmodmap进行此更改; 你可能需要做更低级别的/ usr/share/X11/xkb/*黑客攻击.这很复杂,我甚至不知道你是否首先使用X,所以我会把它留在那里.
像urxvt这样的终端允许你指定自己的键绑定.如Firefox,他们可以告诉当它是一个空间,当它是一个控制航天即使没有你做什么特别的配置X.所以,你可以告诉urxvt输出"\ 033I_TYPED_CONTROL_SPACE_DAMMIT"当你按下Ctrl- Space.然后你可以告诉vim的映射是到<C-N>
.
编辑:我忘记了Ctrl-Space用于输出\0
(我重新映射到键盘上的其他位置).在这种情况下,我上面描述的所有复杂性都是不必要的.我所说的将适用于想要使用更具异国情调的映射的人,比如Ctrl-colon或Alt- Space.