repeticiones clave y rangos en las asignaciones de Vim
Pregunta
Quiero definir una asignación en mi .gvimrc de tal manera que si la última tecla pulsada se lleva a cabo, se repite la acción activada. En concreto, quiero hacer algo como
map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1
para MacVim, pero quiero que la transparencia se continúan siendo disminución / aumento cuando t / T se llevan a cabo (no quiero tener que seguir presionando la barra espaciadora).
Si tiene una sugerencia para una manera más agradable para ajustar la transparencia, lo agradecería también.
Por separado, sería bueno poder ser capaz de escribir 20 SPACE t y tienen la transparencia disminuido en un 20; Sin embargo, cuando intento me sale un
E481: No range allowed.
¿Cómo activo de especificación de extensión?
Muchas gracias.
Solución
No estoy seguro acerca de la primera parte de su pregunta, pero para obtener 20 <Space>
t para poder hacer su trabajo:
:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
- Con
<C-U>
se quita el rango de líneas que se añade a su comando ex cuando se escribe 20 en el modo normal. - Con
exe
ejecutar Vimscript 'dinámica'. -
v:count1
es el recuento dado para el último comando Modo normal (20 en este ejemplo). Y si no hay un recuento dado que por defecto es 1.
Para obtener información adicional, consulte
:h v:count
:h v:count1
Actualización:
Se puede omitir el uso de exe
forma let
en lugar de uno set
:
:map <space>t :<C-U>let &transparency-=v:count1<CR>
Vea :h :let-&
.