Czy mogę używać SPACE jako mapleadera w VIM?

84

Z http://items.sjbach.com/319/configuring-vim-right dowiedziałem się, że powinieneś być w stanie używać Spacejako lidera klonu w vimie. Próbowałem, ale to nie działa. Ktoś, kto sprawił, że to zadziałało?

Wypróbowany:

let mapleader = <space>
Marlun
źródło
7
Niesamowite! Po prostu przeczytaj ten sam post na blogu i znalazłem to po wypróbowaniu <SPACE> ... Okazało się, że w MacVimie nie usunięto mapowania „przesuń jeden znak do przodu” ze spacji, więc dla innych, którzy znajdą to w Google - dodaj „nnoremap <SPACE> <Nop>” przed „let mapleader…” to zadziałało.
michiakig

Odpowiedzi:

100

Zamiast tego spróbuj wykonać następujące czynności:

let mapleader=" "

I pamiętaj, aby napisać wcześniej następujący wiersz, aby upewnić się, że spacja nie ma wcześniej żadnego mapowania:

nnoremap <SPACE> <Nop>
Zsolt Botykai
źródło
19
Jak komentuje spacemanaki w powyższym pytaniu, nnoremap <SPACE> <Nop>był potrzebny, aby to zadziałało.
Sasha
1
@Sasha: naprawdę? Czy mógłbyś wyjaśnić dlaczego, a jeśli tak jest, to może powinieneś edytować pytanie.
greg0ire
4
Bez mapowania sashy, wciśnięcie <Space> nie będzie zachowywać się jak inne klawisze jako mapleader. <Spacja> w trybie normalnym jest odwzorowywana na <w prawo>. Po prostu naciśnij klawisz <spacja> kilka razy z rzędu, a zobaczysz niepożądane zachowanie, które można naprawić nnoremap <Space> <nop>.
freeo
3
Aby dodać do tej odpowiedzi, zauważ, że wartość mapleaderma wpływ tylko na mapowania, które mają miejsce po mapleaderustawieniu. Zobacz :help leader.
evnu
Musiałem zapisać i zamknąć plik rc. Używałem :source %ale remap przestrzeń nie działa.
Jonathan Morales Vélez
67

Mapleader to zmienna łańcuchowa Vima. Aby użyć spacji jako przywódca, musisz uciec od postaci specjalnej.

let mapleader = "\<Space>"

Aby uzyskać więcej informacji, zobacz

http://vimdoc.sourceforge.net/htmldoc/eval.html#expr-quote

EDYTOWAĆ:

To już nie działa dla mnie w mojej wersji Vima. Nawet z sugestią w komentarzach, aby usunąć mapowanie spacji w trybie normalnym, uruchamiając nnoremap <SPACE> <Nop>.

Skończyło się na rozwiązaniu podanym w odpowiedzi poniżej.

map <Space> <Leader>
jayWHY
źródło
1
Upewnij się też, że używasz cudzysłowów, "\<Space>"a nie '\<Space>'.
crlane
1
Wolę tę odpowiedź.
Śpiewał w dniu
let mapleader = "\<Space>"pracował dla mnie w nvim, ale nie w vim. map <Space> <Leader>dla mnie też nie działa w vimie.
Günter Zöchbauer
noremap <Space> <Nop> map <Space> <Leader>pracował w vim
Günter Zöchbauer
Musiałem usunąć miejsce =do pracy wokół Neovima.
Nikhil CSB
18

Powyższe rozwiązania są świetne, jednak nic nie pojawia się w prawym dolnym rogu poleceń. Jeśli i tak nie używasz \klucza, spróbuj go użyć, map <SPACE> <leader>a \pojawi się w rogu poleceń. To i nie musisz najpierw usuwać mapy, jak zasugerowano w powyższych poleceniach.

tehippos
źródło
3
To łamie Komentatora NERD. I przynajmniej w Vim 8 i Neovim przestrzeń pojawia się tak, <20>jakby showcmdbyła włączona, więc myślę, że przy wystarczająco nowym Vimie ta odpowiedź jest przestarzała.
user31389
Chcę tylko dodać, że jest to również najlepsze rozwiązanie, jeśli masz już rozwiniętą pamięć mięśniową dla domyślnego lidera, ale chcesz zamiast tego zacząć wykorzystywać przestrzeń dla lepszej wydajności. "\ r" jest nadal podłączony do mojej pamięci mięśniowej do otwierania Nerd Tree i używania cscope, więc fajnie, że nadal działa nawet podczas mapowania przestrzeni do lidera (chociaż nie czuję potrzeby używania Nerd Commenter).
DrEsperanto