ripete chiave e gli intervalli in mappature Vim
Domanda
voglio definire una mappatura nel mio .gvimrc tale che se si tiene l'ultimo tasto premuto, si ripete l'azione innescata. In particolare, voglio fare qualcosa di simile
map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1
per MacVim, ma voglio la trasparenza di continuare ad essere diminuita / aumentata quando t / T si svolgono (non voglio avere a continuare a premere la barra spaziatrice).
Se si dispone di un suggerimento per un modo migliore per regolare la trasparenza, apprezzerei che anche.
A parte, sarebbe bello essere in grado poter digitare 20 SPAZIO t e hanno la trasparenza è diminuito del 20; tuttavia, quando provo ottengo un
E481: No range allowed.
Come faccio ad attivare specifiche gamma?
Grazie mille.
Soluzione
Non sono sicuro circa la prima parte della sua domanda, ma per ottenere 20 <Space>
t per essere in grado di fare il suo lavoro:
:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
- Con
<C-U>
si rimuove la gamma la linea che viene aggiunto al vostro comando ex quando si digita 20 in modalità normale. - Con
exe
si esegue vimscript 'dinamica'. -
v:count1
è il conteggio espressa l'ultimo comando modalità Normale (20 in questo esempio). E se non v'è alcun conteggio dato che il valore predefinito è 1.
Per ulteriori informazioni vedi
:h v:count
:h v:count1
Aggiornamento:
È possibile omettere exe
tramite il modulo let
al posto di uno set
:
:map <space>t :<C-U>let &transparency-=v:count1<CR>
Vedere :h :let-&
.