vim: evita que o mapeamento composto atue como seu sufixo

1

Eu tenho mapeamentos para copiar / recortar / colar no / do registro:

nnoremap <c-r><c-c>a "ayy   -- copy current line into register a
nnoremap <c-r><c-x>a "add   -- cut current line into register a
nnoremap <c-r><c-v>a "ap    -- paste from register a

e o mesmo para todos os outros registros e modos. Eu também tenho mapeamentos usuais para c-c / x / v para atuar como copiar, recortar e colar para / de um registro sem nome. Agora, se eu pressionar cr cv a rapidamente, então tudo funciona, mas se eu pressionar cr cv e pausar para pensar qual registro usar, o vim decide atuar em cv (executa colar do registrador sem nome).

Existe uma maneira de fazer com que tais mapeamentos funcionem sem conflito no vim? Então, quando eu pressionar c-r c-v, ele não irá expirar e se tornar c-v.

No mapa de teclado padrão, acho que isso funciona por meio de um modo "aguardando carta-registro". Por exemplo, se eu usar c-r no modo de linha de comando, o vim exibirá "e aguardará uma letra de registro indefinidamente, o mesmo no modo normal ao pressionar".

EDIT: vim ajuda menciona que o remapeamento de c-c no modo normal quebra a capacidade de interromper scripts. É verdade, mas a questão ainda se aplica quando se usa algo como c-y.

    
por Uprooted 02.10.2018 / 21:47

1 resposta

1

Você precisa :set notimeout para desabilitar completamente o comportamento ou :set timeoutlen=5000 para aumentar o tempo limite padrão para, por exemplo, 5 segundos. Veja :help map-typing para detalhes

    
por 03.10.2018 / 20:43

Tags