我想将控制+空间映射到:bnext以便在正常模式下转发开关。所以我在.vimrc中添加了以下内容:
nnoremap <silent> <C-Space> :bn<CR>
用于
之后的向后搜索nnoremap <silent> <C-S-Space> :bp<CR>
但是,此解决方案不起作用。关于什么是问题的任何想法,以及我如何解决它?
更新:我的地图列表:
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>
我尝试时的缓冲区:
:ls
1 # "views.py" line 73
2 %a "./forms.py" line 19
导致问题的原因是什么?你能帮忙吗?
答案 0 :(得分:9)
在大多数终端(我假设你正在使用,因为你没有指定gVim / MacVim),<C-Space>
和<C-S-Space>
不要映射到实际的ASCII字符。您可以通过输入插入模式,键入<C-V>
以启动文字字符插入,然后键入其中任意一个键来确认这一点。如果您看到^@
表示您输入了无法映射到的空字符。所以不幸的是,您需要切换到Vim的GUI风格(它确实理解非ASCII地图)或选择不同的映射。
编辑:我的错误,空字符可以通过<NUL>
映射到另一个答案指出。仍然没有区分<C-S-Space>
和<C-Space>
(或<C-j>
和<C-@>
),但您至少可以映射它们。
答案 1 :(得分:9)
您可以使用<NUL>
:
nnoremap <NUL> :w<CR>
在正常模式下键入<c-space>
时,保存当前文件。 这在终端中适用于我(我在windows中使用cygwin终端,应该在其他终端中工作)。
答案 2 :(得分:4)
某些组合键,例如 Ctrl +非字母无法映射, Ctrl + letter vs. Ctrl + Shift +字母无法区分。 (除非您的终端为其发送不同的 termcap 代码,但大多数代码都没有。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则无法使用该组合键。这也适用于<Tab>
/ <C-I>
,<CR>
/ <C-M>
/ <Esc>
/ <C-[>
等。(只有<BS>
例外/ <C-H>
。)这是一个众所周知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。
有些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持Vim的终端中的控制台Vim),并提出了各种提案,cp。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim 8主要版本中有这个。