不能在gvim(windows)</space>中使用CTRL- <space>和Cscope插件

时间:2014-10-08 13:15:42

标签: windows vim cscope

配置

  • Windows 7 Service Pack 1(64位)
  • VIM 7.4(2013年8月10日),32位GUI版本
  • cscope_macros.vim插件来自www.vim.org,版本2.0.0

问题

该插件使用“CTRL-spacebar”或<CTRL-@>映射多个cscope查找函数以水平或垂直分割打开,因为这是VIM根据插件文档识别它的方式。这是插件的片段:

" Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type
" makes the vim window split horizontally, with search result displayed in
" the new window.
"
" (Note: earlier versions of vim may not have the :scs command, but it
" can be simulated roughly via:
"    nmap <C-@>s <C-W><C-S> :cs find s <C-R>=expand("<cword>")<CR><CR>  

nmap <C-@>s :scs find s <C-R>=expand("<cword>")<CR><CR> 
nmap <C-@>g :scs find g <C-R>=expand("<cword>")<CR><CR> 

然而,'CTRL-spacebar'不起作用。当我查看已映射的内容<C-@>实际上被翻译为<nul>。例如,如果我使用命令:map,则这是cscope插件映射键的结果。

n   <nul>d        :scs find d <C-R>=expand("<cword>")<CR><CR><Tab>
n   <nul>i        :scs find i <C-R>=expand("<cfile>")<CR><CR><Tab>
n   <nul>f        :scs find f <C-R>=expand("<cfile>")<CR><CR><Tab>
n   <nul>e        :scs find e <C-R>=expand("<cword>")<CR><CR><Tab>

我能找到'CTRL-spacebar'/ <CTRL-@>:help index)的唯一内容是

tag     char        action in Insert mode   ~
-----------------------------------------------------------------------
i_CTRL-@    CTRL-@      insert previously inserted text and stop
                        insert

但这不是我观察到的行为。

当我尝试在插入模式下使用'CTRL-spacebar'时,所有发生的事情都是在光标处插入一个空格。当我在正常模式下使用它时,它似乎将光标移动到下一个单词的开头,如果它是空白则移动到下一行。

那么,如何在Windows上的VIM中映射“CTRL-spacebar”?

1 个答案:

答案 0 :(得分:4)

在Windows GVIM中,使用简单的<C-Space>作为映射的左侧。 <C-@>或等效的<Nul>是(Linux)终端的变通方法,它通常提供更少的可映射密钥。大概是针对那些指示。