2014-04-21 10 views
5

Ich möchte control + Leerzeichen an: Bnext zuordnen, um im normalen Modus Switch weiterzuleiten. Also habe ich folgendes meine .vimrc:Control + Space Vim Tastenanbindung im normalen Modus funktioniert nicht

nnoremap <silent> <C-Space> :bn<CR> 

Für Rückwärtssuche folgende

nnoremap <silent> <C-S-Space> :bp<CR> 

Allerdings ist diese Lösung nicht. Irgendwelche Ideen, was ist das Problem und wie kann ich es lösen?

Update: Meine Zuordnungsliste:

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> 

Meine Puffer, wenn ich versuche:

:ls 
    1 # "views.py"      line 73 
    2 %a "./forms.py"     line 19 

Was das Problem verursachen? Kannst du helfen?

+0

Überprüfen Sie, ob Ihre Keymaps in ': map' angezeigt werden. Außerdem werden sie nur etwas tun, wenn es mehr als 1 Puffer in ': ls' gibt. – mtadd

+0

@mtadd Ich aktualisierte meine Frage bitte helfen. – Khamidulla

+0

Ich sehe Ihre Keymaps für ': bn ' und ': bp ' in der Mapping-Liste nicht. – mtadd

Antwort

9

Sie können <NUL> für diesen Einsatz:

nnoremap <NUL> :w<CR> 

speichert die aktuelle Datei, wenn Sie <c-space> im normalen Modus ein. Das funktioniert bei mir im Terminal (ich benutze das cygwin-Terminal in Windows, sollte in anderen Terminals funktionieren).

+0

Es funktioniert wie Magie danke. – Khamidulla

9

In den meisten Terminals (die ich verwende, da Sie gVim/MacVim nicht angegeben haben), <C-Space> und <C-S-Space> nicht zu tatsächlichen ASCII-Zeichen zuordnen. Sie können dies bestätigen, indem Sie den Einfügemodus eingeben und <C-V> eingeben, um die Zeicheneingabe einzuleiten, und dann einen dieser Schlüssel eingeben. Wenn Sie ^@ sehen, bedeutet dies, dass Sie das Null-Zeichen eingegeben haben, das nicht zugeordnet werden kann. Sie müssen also entweder zu einer GUI-Version von Vim wechseln (die nicht-ASCII-Karten versteht) oder eine andere Zuordnung wählen.

Edit: mein Fehler, das Null-Zeichen kann zugeordnet werden, über <NUL>, wie eine andere Antwort darauf hinweist. Es gibt immer noch keine Unterscheidung <C-S-Space> und <C-Space> (oder <C-j> und <[email protected]>), aber Sie können sie mindestens zuordnen.

+0

Mein Terminal ist Gnome Terminal. – Khamidulla

+0

Danke, ich verstehe, warum es nicht funktioniert. Ich werde ein anderes Mapping wählen. – Khamidulla

+0

@Phoenix, was ist mit den Standard 'gt' und' gT'? – romainl

3

Einige Tastenkombinationen, wie Ctrl + nicht alphabetischen nicht abgebildet werden, und Ctrl + Brief gegen Ctrl +Umschalt + Brief unterschieden werden kann. (Es sei denn, Ihr Terminal sendet einen eindeutigen Code dafür, was am meisten nicht ist.) Geben Sie im Einfüge- oder Befehlszeilenmodus die Tastenkombination ein. Wenn nichts passiert/eingefügt wird, können Sie diese Tastenkombination nicht verwenden. Dies gilt auch für <Tab>/<C-I>, <CR>/<C-M>/<Esc>/<C-[> usw. (Einzige Ausnahme ist <BS>/<C-H>.) Dies ist ein bekannter Schmerzpunkt und Gegenstand verschiedener Diskussionen über vim_dev und den #vim IRC-Kanal.

Einige Leute (vor allem Paul LeoNerd Evans) wollen das beheben (auch für Konsole Vim in Terminals, die dies unterstützen), und haben verschiedene Vorschläge, vgl.http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Aber bis heute haben sich keine Patches oder freiwillige Helfer gemeldet, obwohl viele den Wunsch geäußert haben, dies in einer zukünftigen Veröffentlichung von Vim 8 Major zu haben.

Verwandte Themen