Faça com que o vimdiff exiba linhas diferentes como linhas diferentes (não parcialmente diferentes)

7

O vimdiff tem um hábito irritante de exibir duas linhas quase completamente diferentes como a mesma linha parcialmente diferente, apenas porque compartilham um caractere em comum no início ou no final.

Por exemplo:

foo.txt contém: The quick brown fox jumps over the lazy dog . bar.txt contém: This is a completely different line .

vimdiff foo.txt bar.txt exibe essas duas linhas lado a lado com tudo, menos o Th no início realçado.

Existe uma maneira de desabilitar esse comportamento e exibir linhas diferentes como linhas diferentes?

    
por Shum 30.10.2013 / 05:50

3 respostas

1

Não, isso faz parte do algoritmo interno do Vim para dividir ainda mais as mudanças de linha reportadas pela ferramenta de comparação externa.

Seria bom se isso pudesse ser influenciado por uma opção, mas a corrente não é nenhuma. Você teria que modificar o código-fonte do Vim e compilar sua própria versão especial. Que tal escrever um patch e enviá-lo para a lista de discussão vim_dev ?!

    
por 30.10.2013 / 08:24
0

Acho que depende da saída do comando "diff".

Se você executar ": help diff-options", você pode ver um exemplo do formato do diff que o Vim espera:

    1a2
    > bbb
    4d4
    < 111
    7c7
    < GGG
    ---
    > ggg

The "1a2" item appends the line "bbb".
The "4d4" item deletes the line "111".
The '7c7" item replaces the line "GGG" with "ggg".

Para substituir (por exemplo, 7c7), acho que o vimdiff irá colocá-los lado a lado e colori-lo hl-DiffChange (por exemplo, roxo em minha configuração padrão) e, em seguida, destacar o texto diferente na linha por hl- DiffText (por exemplo, vermelho na minha configuração padrão).

Por exemplo, se eu validar esses dois arquivos:

Arquivo 1:

This is common1
This is common2
11111111111111122222222222222222222222222222222222222
This is common4
This is common5

Arquivo 2:

This is common1
This is common2
This is a completely different line
This is common4
This is common5

Embora a terceira linha de dois arquivos seja completamente diferente, o vimdiff ainda os coloca lado a lado.

Uma solução hacky pode estar usando um programa modify diff externo que produz o formato que você deseja.

    
por 30.10.2013 / 09:10
0

Sim, é possível. Digite o comando

:hi! link DiffChange DiffText
    
por 05.01.2015 / 11:51

Tags