正常模式下的Control + space vim键绑定不起作用

Kha*_*lla 6 vim keyboard-shortcuts gnome-terminal ubuntu-12.04

我想将控制+空间映射到:bnext以便在正常模式下转发开关.所以我在.vimrc中添加了以下内容:

nnoremap <silent> <C-Space> :bn<CR>
Run Code Online (Sandbox Code Playgroud)

用于后向搜索

nnoremap <silent> <C-S-Space> :bp<CR>
Run Code Online (Sandbox Code Playgroud)

但是,此解决方案不起作用.关于什么是问题的任何想法,以及我如何解决它?

更新:我的映射列表:

n  [m          *@:call <SNR>45_Python_jump('?^\s*\(class\|def\)')<CR>
n  [[          *@:call <SNR>45_Python_jump('?^\(class\|def\)')<CR>
n  ]m          *@:call <SNR>45_Python_jump('/^\s*\(class\|def\)')<CR>
n  ]]          *@:call <SNR>45_Python_jump('/^\(class\|def\)')<CR>
   <F7>        *@:call Flake8()<CR>
n  <Tab>       * <C-W>w
n  <CR>        * :call gruvbox#hls_hide()<CR><CR>
n  *           * :let @/ = ""<CR>:call gruvbox#hls_show()<CR>*
n  ,tj           :call Tj()<CR>
n  ,st           :call Sts()<CR>           <Space>
n  /           * :let @/ = ""<CR>:call gruvbox#hls_show()<CR>/
n  ?           * :let @/ = ""<CR>:call gruvbox#hls_show()<CR>?
n  \ca           <Plug>NERDCommenterAltDelims
x  \cu           <Plug>NERDCommenterUncomment
n  \cu           <Plug>NERDCommenterUncomment
x  \cb           <Plug>NERDCommenterAlignBoth
n  \cb           <Plug>NERDCommenterAlignBoth
x  \cl           <Plug>NERDCommenterAlignLeft
n  \cl           <Plug>NERDCommenterAlignLeft
n  \cA           <Plug>NERDCommenterAppend
x  \cy           <Plug>NERDCommenterYank
n  \cy           <Plug>NERDCommenterYank
x  \cs           <Plug>NERDCommenterSexy
n  \cs           <Plug>NERDCommenterSexy
x  \ci           <Plug>NERDCommenterInvert
n  \ci           <Plug>NERDCommenterInvert
n  \c$           <Plug>NERDCommenterToEOL
x  \cn           <Plug>NERDCommenterNested
n  \cn           <Plug>NERDCommenterNested
x  \cm           <Plug>NERDCommenterMinimal
n  \cm           <Plug>NERDCommenterMinimal
x  \c<Space>     <Plug>NERDCommenterToggle
n  \c<Space>     <Plug>NERDCommenterToggle
x  \cc           <Plug>NERDCommenterComment
n  \cc           <Plug>NERDCommenterComment
n  \b          * :CommandTBuffer<CR>
n  \t          * :CommandT<CR>
v  \<Space>    * <Esc>:call gruvbox#hls_toggle()<CR>gv
n  \<Space>    * :call gruvbox#hls_toggle()<CR>
n  gx            <Plug>NetrwBrowseX
n  <Plug>NetrwBrowseX * :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<CR>
n  <Plug>NERDCommenterAltDelims * :call <SNR>17_SwitchToAlternativeDelimiters(1)<CR>
x  <Plug>NERDCommenterUncomment * :call NERDComment("x", "Uncomment")<CR>
n  <Plug>NERDCommenterUncomment * :call NERDComment("n", "Uncomment")<CR>
x  <Plug>NERDCommenterAlignBoth * :call NERDComment("x", "AlignBoth")<CR>
n  <Plug>NERDCommenterAlignBoth * :call NERDComment("n", "AlignBoth")<CR>
x  <Plug>NERDCommenterAlignLeft * :call NERDComment("x", "AlignLeft")<CR>
n  <Plug>NERDCommenterAlignLeft * :call NERDComment("n", "AlignLeft")<CR>
n  <Plug>NERDCommenterAppend * :call NERDComment("n", "Append")<CR>
x  <Plug>NERDCommenterYank * :call NERDComment("x", "Yank")<CR>
n  <Plug>NERDCommenterYank * :call NERDComment("n", "Yank")<CR>
x  <Plug>NERDCommenterSexy * :call NERDComment("x", "Sexy")<CR>
n  <Plug>NERDCommenterSexy * :call NERDComment("n", "Sexy")<CR>
x  <Plug>NERDCommenterInvert * :call NERDComment("x", "Invert")<CR>
n  <Plug>NERDCommenterInvert * :call NERDComment("n", "Invert")<CR>
n  <Plug>NERDCommenterToEOL * :call NERDComment("n", "ToEOL")<CR>
x  <Plug>NERDCommenterNested * :call NERDComment("x", "Nested")<CR>
n  <Plug>NERDCommenterNested * :call NERDComment("n", "Nested")<CR>
x  <Plug>NERDCommenterMinimal * :call NERDComment("x", "Minimal")<CR>
n  <Plug>NERDCommenterMinimal * :call NERDComment("n", "Minimal")<CR>
x  <Plug>NERDCommenterToggle * :call NERDComment("x", "Toggle")<CR>
n  <Plug>NERDCommenterToggle * :call NERDComment("n", "Toggle")<CR>
x  <Plug>NERDCommenterComment * :call NERDComment("x", "Comment")<CR>
n  <Plug>NERDCommenterComment * :call NERDComment("n", "Comment")<CR>
   <F4>          :Tlist<CR>
n  <C-Space>   * :bnext<CR>
n  <S-Tab>     * <C-W>W
   <F3>          :NERDTreeToggle<CR><CR>
Run Code Online (Sandbox Code Playgroud)

我尝试时的缓冲区:

:ls
  1 #    "views.py"                     line 73
  2 %a   "./forms.py"                   line 19
Run Code Online (Sandbox Code Playgroud)

是什么原因造成的?你能帮我吗?

jos*_*tch 10

在大多数终端(我假设您正在使用,因为您没有指定gVim/MacVim),<C-Space>并且<C-S-Space>不映射到实际的ASCII字符.您可以通过输入插入模式,键入<C-V>以启动文字字符插入,然后键入其中任何一个键来确认这一点.如果您看到^@这意味着您输入了无法映射到的Null字符.所以不幸的是,您需要切换到Vim的GUI风格(它确实理解非ASCII地图)或选择不同的映射.

编辑:我的错误,空字符可以映射到<NUL>,作为另一个答案指出.仍然没有区别<C-S-Space>和<C-Space>(或<C-j>,和<C-@>),但你至少可以映射它们.


ske*_*ept 9

你可以使用<NUL>这个:

nnoremap <NUL> :w<CR>
Run Code Online (Sandbox Code Playgroud)

<c-space>在正常模式下键入时保存当前文件.这对我来说在终端(我在windows中使用cygwin终端,应该在其他终端工作).


Ing*_*kat 6

某些组合键,例如Ctrl+ 非字母无法映射,并且无法区分Ctrl+ 字母与Ctrl+ Shift+ 字母。(除非您的终端为其发送了一个不同的termcap代码,而大多数情况下不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/被插入,则不能使用该组合键。这也适用于<Tab>/ <C-I>,<CR>/ <C-M>/ <Esc>/<C-[>等(仅例外是<BS>/ <C-H>)。这是一个已知的痛点,并在vim_dev各种讨论和#vim IRC频道的主题。

有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使对于支持这个的终端中的控制台 Vim),并且已经提出了各种建议,cp。http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有它。