Comportamento estranho em Shift - {Esc, Fx}

1

Às vezes, ao mudar entre os modos no Vim, esqueço de tirar o dedo fora da tecla Shift . Este erro inocente é provavelmente parte da bagagem transitado de outros terminais, mas nunca vi minha entrada tratada dessa maneira.

Depois de mudar do modo de comando para o modo de entrada, se eu pressionar a tecla Esc enquanto a tecla Shift estiver desativada, o Vim exibirá (Control Sequence Introducer) em vez de mudar para o modo de comando.

Pelo menos duas soluções alternativas para este comportamento pretendido estão disponíveis no site do mintty ( faq , edição ).

" Avoiding escape timeout issues in vim
:let &t_ti.="\e[?7727h"
:let &t_te.="\e[?7727l"
:noremap <Esc>O[ <Esc>
:noremap! <Esc>O[ <Esc>

" Remap escape
:imap <special> <CSI> <ESC>

Minha pergunta é sobre a sintaxe e o significado da primeira solução. Pela aparência, parece que t_ti está sendo atribuído a um valor literal, mas não sei por que o operador "c address-of" é necessário. Eu também não tenho certeza porque existem duas declarações noremap .

    
por Ярослав Рахматуллин 07.12.2012 / 05:18

1 resposta

3

t_ti e t_te são as duas opções do Vim. Os valores normalmente são atribuídos a eles usando o comando :set , como :set t_ti=abcde , em que o lado direito ( abcde neste exemplo) é uma cadeia literal. O comando :let é mais flexível que :set e pode ser usado para definir os valores de outros tipos de variáveis além das opções. Para distinguir opções de outros tipos de variáveis neste contexto, o Vim prefixará nomes de opções com & . Veja

:help options
:help :let-&

A partir da segunda referência, você também pode ver que o operador .= anexa a sequência de argumentos à variável à esquerda.

O comando :noremap se aplica a mapeamentos nos modos Normal, Visual e Operador pendente. O comando :noremap! aplica-se aos mapeamentos em todos os outros modos: Insert e Command-line. Veja

:help :map
:help :map!
:help mapmode-nvo
:help mapmode-ic

A documentação do mapeamento do Vim está no arquivo map.txt, encontrado com :help map.txt . Embora a documentação do Vim seja geralmente muito boa, acho que essa seção em particular é difícil de seguir. Essas seções podem ser mais claras:

:help 05.3
:help 40.1
    
por 07.12.2012 / 05:49