des répétitions et des plages clés dans des mappages Vim
Question
Je veux définir un mappage dans mon .gvimrc telle que si la dernière touche est maintenue, l'action déclenchée est répétée. Plus précisément, je veux faire quelque chose comme
map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1
pour MacVim, mais je veux la transparence de continuer à être diminué / augmenté lorsque t / T ont lieu (ne veulent pas avoir à continuer à appuyer sur la barre d'espace).
Si vous avez une suggestion pour une plus belle façon de régler la transparence, je vous en serais reconnaissant aussi.
Par ailleurs, il serait agréable de pouvoir être en mesure de taper 20 ESPACE t et ont la transparence a diminué de 20; Cependant, lorsque je tente, je reçois un
E481: No range allowed.
Comment activer la spécification de gamme?
Merci beaucoup.
La solution
Je ne suis pas sûr de la première partie de votre question, mais pour obtenir 20 <Space>
t pour être en mesure de faire son travail:
:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
- Avec
<C-U>
vous retirez la plage de ligne qui est ajoutée à votre commande ex lorsque vous tapez 20 en mode normal. - Avec
exe
vous exécutez vimscript 'dynamique'. -
v:count1
est le nombre donné pour la dernière commande du mode Normal (20 dans cet exemple). Et s'il n'y a pas donné le nombre de sa valeur par défaut 1.
Pour plus d'informations voir
:h v:count
:h v:count1
Mise à jour:
Vous pouvez omettre exe
en utilisant le formulaire de let
au lieu de set
un:
:map <space>t :<C-U>let &transparency-=v:count1<CR>
Voir :h :let-&
.