diff in modo caratteristico


9

Esiste uno strumento stabile (opzione / plugin di uno strumento esistente: vimdiff, diff, ecc.) In Linux per fare diff tra due file di testo in modo caratteristico?

Vorrei vedere evidenziata la sottosequenza comune più lunga tra i miei due file. Esiste un classico algoritmo del tempo polinomiale , ma gli strumenti standard sembrano funzionare solo riga per riga.

Risposte:


2

Il buon vecchio cmpfa un diff caratteristico. Fa parte di UNIX da circa 40 anni. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Sfortunatamente, si ferma al primo personaggio diverso, quindi non so se questa risposta sia utile per te.


Grazie. Ho appena corso un cmp -bl ...dopo aver trovato questa risposta e ha riportato diverse differenze e le loro posizioni. La mia versione è cmp (GNU diffutils) 3.6.
Dzamo Norton,

2

Installa diffchar( collegamento Github per coloro che utilizzano un caricatore automatico di plug-in). Dalla v4.7, con il plugin abilitato, Vim mostra automaticamente differenze più esatte:

inserisci qui la descrizione dell'immagine

  • È possibile premere F7(la mappa di tasti predefinita) per alternare tra il solito e il plugin. Riassegna con:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    sostituendo <key>con un codice chiave appropriato.

  • Puoi usare più colori:

    let g:DiffColors=100
    

Sfortunatamente, questo non funziona su più linee, meglio che posso dire. Tuttavia, le regioni comuni sono lasciati un -highlighted (e piegati, se crescono troppo lungo), per cui si potrebbe essere in grado di trarre vantaggio da questo.


Copiato dal mio post Scambio stack Vi e Vim .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.