在网上搜索了一下后,我似乎无法将 Ctrl Space 映射到任何/很多。有没有办法今天做,我发现通常是2岁。
答案 0 :(得分:45)
我遇到了同样的问题,简短的回答是肯定的,而且不仅仅是在gui版本中。在.vimrc
上添加此内容就足够了:
inoremap <C-Space> <C-x><C-o>
inoremap <C-@> <C-Space>
答案 1 :(得分:24)
问题似乎是Terminal.app没有正确解释<C-Space>
,Vim将其理解为<C-@>
,这是一个内置映射(:help CTRL-@
)。
也许你可以使用.vimrc中的以下内容:
if !has("gui_running")
inoremap <C-@> <C-x><C-o>
endif
这似乎有用,但是我不喜欢像这样重写内置插件的想法。
相反,您应该尝试<Leader>
(:help leader
),它为您提供了定义自己的自定义映射的巨大可能性,并且(取决于您选择的mapleader
不会干扰操作系统/应用程序特定的快捷方式/限制,因此更便携。
在我的.vimrc:
中let mapleader=","
inoremap <leader>, <C-x><C-o>
我只需点击,,
即可完成方法名称。
答案 2 :(得分:5)
nitpicker打破了pablox溶液。解决方案的关键在于重新映射。因此,当您禁用重新映射时,它无法正常工作
如果你真的想要投入noremap
,这就是它的样子:
inoremap <expr><C-space> neocomplete#start_manual_complete()
imap <C-@> <C-Space>
不工作的内容:inoremap <C-@> <C-Space>
'因为<C-Space>
部分不会自行重新映射。
答案 3 :(得分:3)
:inoremap <c-space> <c-x><c-o>
?omnifunc
设置了吗?答案 4 :(得分:3)
将以下代码添加到~/.vimrc
:
" Ctrl-Space for completions. Heck Yeah!
inoremap <expr> <C-Space> pumvisible() \|\| &omnifunc == '' ?
\ "\<lt>C-n>" :
\ "\<lt>C-x>\<lt>C-o><c-r>=pumvisible() ?" .
\ "\"\\<lt>c-n>\\<lt>c-p>\\<lt>c-n>\" :" .
\ "\" \\<lt>bs>\\<lt>C-n>\"\<CR>"
imap <C-@> <C-Space>
答案 5 :(得分:2)
为了适应Windows和Linux,我将其应用于~/.vimrc
if has("unix")
inoremap <C-@> <c-x><c-o>
elseif has("win32")
inoremap <C-Space> <c-x><c-o>
endif
答案 6 :(得分:0)
使用Mac OS上所有模式的一组映射,我得到了更好的结果。尚未测试Windows或Linux。
我不明白例外答案应如何在终端模式下工作。
inoremap <C-space> <ESC>
vnoremap <C-space> <ESC>
cnoremap <C-space> <C-c>
" When in terminal, <C-Space> gets interpreted as <C-@>
imap <C-@> <C-space>
vmap <C-@> <C-space>
cmap <C-@> <C-space>