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>

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>

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>

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.