2011-12-06 12 views
5

Mi piacerebbe avere una chiave leader sinistra e destra. Se voglio che sia il valore predefinito \ e , siano i miei leader, ho pensato che sarebbe stato semplice come aggiungere nnoremap , \ o nnoremap , <leader> al mio .vimrc. Ma apparentemente no. Come faccio a fare questo?Come mappare più chiavi <leader> in vim?

+0

Una soluzione alternativa per avere una chiave leader per entrambe le mani: usa lo spazio. L'idea è venuta dai dotfiles di Square, https://github.com/square/maximum-awesome – alxndr

risposta

9

mio <leader> è destinata a , e questo funziona per me:

:nmap \ , 

Tutto delle mappature dei miei leader sono ora disponibili utilizzando \ o , come leader. Penso che sia lo nnoremap a farti inciampare.

+1

sì, grazie. Mi stavo davvero grattando la testa. –

+0

Potresti modificare la tua risposta e farla dipendere dal tuo attuale mapping leader, per [email protected] suggerito: nmamp \ aturegano

0

Come funziona esattamente? Vim, quando incontra <leader> lo sostituisce con la chiave mappata. Se dovessi usare due (chiavi per <leader>), come farebbe a sapere quale sostituire con <leader>?

Ciò che si può fare tuttavia è utilizzare <leader> e <localleader> ma questo è solo due leader separati, non mappare due chiavi a uno di essi.

Quindi, no ... non è possibile.

Tuttavia è possibile mappare le scorciatoie in modo esplicito.

+0

Le scorciatoie, è quello che sto cercando di definire. Fare qualcosa come '' nnoremap, \ '' non sta girando ',' in '\'. Se lo facesse, sarebbe equivalente al gestore di mappe che mi dà effettivamente due chiavi che fungono da leader. Sto sbagliando? –

+1

@TheDeeno - In un certo senso, si. La prima mappatura 'nnoremap,' dice "ogni volta che premo, sostituisco, con \ e faccio ... qualsiasi cosa". Poi arriva la seconda che dice "ogni volta che premo, sostituisco, con leader e faccio ...". Uno "sovrascrive" l'altro. – Rook

2

<leader> è conveniente ma è possibile creare mapping come ,mm o \mm senza utilizzarlo. Basta duplicare tutti i tuoi <leader>something e rimappare con ' e \ direttamente:

nnoremap <leader>d "_d 

sarebbe diventato

nnoremap ,d "_d 
nnoremap \d "_d 
2

È possibile mappare un tasto direttrice all'altro, come nella risposta accettata, ma se si intende utilizzare <leader> in primo luogo, è necessario effettuare il binding su <leader> stesso. In questo modo, il binding funzionerà ancora se si modifica (o si rimuove) la prima chiave leader.

map , <leader> 

Si noti che questo ancora non del tutto lavoro come una seconda leader. Se il primo leader non è impostato, il binding funzionerà ancora, ma Vim tornerà a utilizzare come leader il \, poiché non vi è più un leader "ufficiale" (vale a dire un valore valido per la variabile mapleader). (Questo non sarebbe un problema per l'OP, ma potrebbe essere per gli altri.)

+0

Questa è la risposta più precisa perché non dipende dalla chiave attualmente in uso. – aturegano

Problemi correlati