Então todos nós temos o diff
comando instalado por padrão. Eu certamente não sei como usá-lo bem . Mas eu esperaria algum uso padrão razoável. Mas quando eu digito diff file1 file2
eu recebo... um texto... que eu tenho que analisar na minha cabeça... o que não é ajudado pelo fato de que esta é uma combinação estranha de dois textos, que por sua vez são muito complexos.
Então procurei uma solução gráfica, por exemplo meld
. Isso funciona muito melhor fora da caixa.
No entanto, eu preferiria ter o luxo de ficar na linha de comando o tempo todo. Existe um comando bastante padrão que:
- usa cor por padrão e pode adotar realce de sintaxe
- apresenta diferenças lado a lado e faz fusões de 3 vias por padrão
- funciona na linha de comando, por exemplo, via
libncurses
- não depende de nenhum
vim
,emacs
nem de um IDE - pode modificar arquivos editados no local?
Se não, por que não? Dei uma olhada colordiff
mas não deu certo.
Parece que o delta atenderia a muitos desses requisitos:
https://github.com/dandavison/delta
Recursos de resumo:
Exemplo de captura de tela do link acima:
Temo que esta resposta não o satisfaça, mas acho que você apresenta restrições conflitantes.
Sobre a diferença
Mas primeiro tenho que defender a clássica ferramenta diff: Seu objetivo principal é gerar patches de software que devem ser processados por máquinas na aplicação. Além disso, esses patches são projetados para serem o mais compactos possível e usar, idealmente, apenas caracteres ASCII, para que possam ser compartilhados de forma rápida e confiável via e-mail, Usenet, etc.
Que esses patches possam ser lidos por humanos (e compreendidos por alguns humanos) também é uma propriedade importante, mas não a prioridade máxima.
Sua pergunta
Eu entendo e compartilho seu desejo por ferramentas de linha de comando simples e elementares, mas uma comparação lado a lado, possivelmente com realce de cores, não é simples nem está dentro do escopo do que podemos esperar de uma ferramenta de linha de comando real, simplesmente porque ele não é mais orientado a linhas.
O que vem a seguir são ferramentas baseadas em Vi ou Emacs, que são tão simples e claras para a recepção humana quanto possível, sendo altamente flexíveis ao mesmo tempo. Eles também oferecem recursos de mesclagem poderosos.
Forma aqueles,
vimdiff
já foi mencionado nos comentários .Com relação ao Emacs, as comparações de arquivos geralmente são iniciadas a partir do editor. A ferramenta mais utilizada para isso é o Ediff, que oferece inúmeros pontos de entrada que correspondem às diversas necessidades: comparação de dois arquivos, arquivos de árvore, um deles tratado como ancestral comum, etc. O mesmo com possíveis fusões.
Embora incomum, eu configurei um acesso ao Ediff a partir da linha de comando: Se você iniciar o Emacs com
então você pula diretamente em uma sessão interativa do Ediff que compara
FILE1
eFILE2
dentro do seu terminal. Se você omitir a-nw
opção (e todos os requisitos forem atendidos), você obterá a mesma sessão em um quadro gráfico separado. Veja também esta pergunta relacionada por ashutosh jain.Ok, eu não iria tão longe para chamar o Emacs de uma ferramenta fácil. Mas se você estudá-lo cuidadosamente por alguns anos, você vai adorar. (Opinião pessoal.)
Então, infelizmente não: não conheço nenhuma ferramenta que atenda a todas as suas restrições.