如何将ctrl x ctrl o映射到终端vim中的ctrl空间?

pli*_*ter 50 mapping vim omnicomplete

在网上搜索了一下后,似乎我无法映射CtrlSpace到任何东西/很多.今天有办法做到这一点,我发现通常是2岁.

Pab*_* C. 47

我遇到了同样的问题,简短的回答是肯定的,你不仅可以在gui版本中使用.在你身上添加这个就.vimrc足够了:

inoremap <C-Space> <C-x><C-o>
inoremap <C-@> <C-Space>
Run Code Online (Sandbox Code Playgroud)

  • 对我来说它只是`inoremap <C - @> <cx> <co>`(在Linux上) (15认同)
  • 我知道这是_really_挑剔,但我会考虑使用`inoremap`而不仅仅是'imap`,因为前者会确保你以后做的任何搞乱都不会改变这些设置.但是,真的,这是过度谨慎的过度杀伤力. (3认同)

rom*_*inl 25

问题似乎是Terminal.app没有<C-Space>正确解释,Vim将其理解为<C-@>内置的mapping(:help CTRL-@).

也许你可以使用.vimrc中的以下内容:

if !has("gui_running")
    inoremap <C-@> <C-x><C-o>
endif
Run Code Online (Sandbox Code Playgroud)

这似乎工作,在这里,但我不喜欢像这样重写内置插件的想法.

相反,您应该尝试使用<Leader>(:help leader),它为您提供了定义自己的自定义映射的巨大可能性,并且(取决于mapleader您的选择)不会干扰OS/app特定的快捷方式/限制,因此更具可移植性.

在我的.vimrc中有这个:

let mapleader=","
inoremap <leader>, <C-x><C-o>
Run Code Online (Sandbox Code Playgroud)

我只是点击,,完成方法名称.

  • 键入`<C-Space>`时,不仅Terminal.app输出NULL.如果我发现它是用一些标准写的,我不会感到惊讶:至少urxvt和konsole也做这件事. (3认同)

oli*_*ver 6

nitpicker破坏了pablox溶液.解决方案的关键在于重新映射.因此,当您禁用重新映射时,它无法正常工作.
如果你真的想要投入noremap,这就是它的样子:

inoremap <expr><C-space> neocomplete#start_manual_complete()
imap <C-@> <C-Space>
Run Code Online (Sandbox Code Playgroud)

什么会工作:inoremap <C-@> <C-Space>"导致<C-Space>部分不会被重新映射本身.