Qual é o objetivo do modo de substituição virtual no Vim?

9

A ajuda diz que os comandos do modo de substituição virtual no Vim gre GRsubstituem caracteres no estado da tela e não no arquivo.

:help Virtual-Replace-mode

Estou entendendo isso como algo como alterar os caracteres na tela, mas não no próprio buffer. Isso está certo? Parece incorreto.

Posso usar uma explicação e provavelmente um cenário ou um exemplo em que esse recurso é relevante.

Sri Kadimisetty
fonte

Respostas:

9

No modo de substituição virtual, o buffer é mais difícil de ser fixado à sua posição de origem.

1. Hello World
         ^ Cursor
2. I like cheese
3. And beer

Ao entrar no modo de substituição normal e pressionar Internet<CR>And otherso novo buffer, será assim:

1. Hello Internet
2. And others
3. I like cheese
4. And beer

Ao fazer o mesmo no Virtual-Replace, o resultado será

1. Hello Internet
2. And othersese
3. And beer

Outro exemplo (tabstop = 2; sts = 0):

1. 012345678901234567890
2. Hello beautiful World
         ^ Cursor

Teclas pressionadas: <Tab><Tab>

Resultado do modo de substituição:

1. 012345678901234567890
2. Hello     autiful World

Resultado do modo de substituição virtual:

1. 012345678901234567890
2. Hello     tiful World

Como no modo Substituir, a substituição é feita char por char, onde Tabestá um char, não importa quantos chars sejam exibidos. No modo de substituição virtual, o comprimento visível de Tab( :h 'ts', :h 'sts') é usado para substituir os caracteres.

krissi
fonte
(Alguns caracteres foram devorados pela formatação dos comentários, algumas seqüências de caracteres citadas parecem que faltam texto para mim). De qualquer forma, o último parágrafo ajudou muito. Tenho certeza de que já entendi :) Obrigado, @krissi!
Sri Kadimisetty