Pergunta

Quero definir um mapeamento no meu .GVIMRC, de modo que, se a última tecla pressionada for mantida, a ação acionada será repetida. Especificamente, eu quero fazer algo como

map <SPACE>t :set transparency-=1
map <SPACE>T :set transparency+=1

Para MacVim, mas quero que a transparência continue diminuindo/aumentada quando t/t for mantida (não quero continuar pressionando a barra de espaço).

Se você tem uma sugestão para uma maneira mais agradável de ajustar a transparência, eu também apreciaria isso.

Separadamente, seria bom poder digitar 20 ESPAÇO t e a transparência diminuiu em 20; No entanto, quando tento, recebo um

E481: No range allowed.

Como posso ativar a especificação do intervalo?

Muito obrigado.

Foi útil?

Solução

Não tenho certeza sobre a primeira parte da sua pergunta, mas para obter 20 <Space> t Ser capaz de fazer seu trabalho:

:map <space>t :<C-U>exe "set transparency-=".v:count1<CR>
  • Com <C-U> você remove o intervalo de linha que é adicionado ao seu comando ex quando você digita 20 no modo normal.
  • Com exe Você executa o vimscript 'dinâmico'.
  • v:count1 é a contagem fornecida para o último comando de modo normal (20 neste exemplo). E se não houver contagem, considerando que a inadimplência é 1.

Para informações adicionais, consulte

:h v:count
:h v:count1

Atualizar:

Você pode omitir exe usando let forma em vez de set 1:

:map <space>t :<C-U>let &transparency-=v:count1<CR>

Ver :h :let-&.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top