Make diff Utiliser la largeur totale du terminal en mode côte à côte


40

La plupart des applications utilisent intelligemment toute la largeur du terminal à leur disposition. Mon shell le fait, screen, vim, etc. Cependant, diffen mode côte à côte ( -y), non. Cela me met en colère. Il utilise une largeur de 126 caractères, ce qui ne représente même pas la moitié de mon terminal de 270 blocs de largeur.

Regarder à travers la page de manuel ne révèle rien de particulier concernant l’ajustement automatique de la largeur, mais le spécifie manuellement via -W.

Existe-t-il peut-être une "fonctionnalité cachée" diffpour lui permettre de s’étendre automatiquement sur toute la largeur du terminal? Ou; Quel est le chemin le plus facile pour insérer automatiquement -W <terminalsize>dans ma commande diff chaque fois que je l'exécute?

Je suis fondé sur l'hypothèse que l'ajout automatique de -W à tout ne peut rien faire de mal, car cela signifiera toujours "utiliser $ x colonnes", ce qui est toujours ce que je veux, que je sois en mode côte à côte, ou autrement.

Réponses:


51
$ alias diff='diff -W $(( $(tput cols) - 2 ))'

devrait le faire. Vous voudrez également l'ajouter à ~ / .bashrc.

Il - 2s’agit principalement de paranoïa, dans le cas où quelque chose (Unicode intégré à double largeur?) S’étend suffisamment pour que la ligne s’enroule; si vous voulez, vous pouvez simplement utiliser

$ alias diff='diff -W $(tput cols)'

J'ai commencé à remarquer $ COLUMNS et je pensais quelque chose dans le même sens. alias diff = "diff -W $ {COLUMNS}". Je pense que je préférerais demander à la coquille plutôt que de compter sur l'environnement bien.
— VxJasonxV

1
tputconsidère $COLUMNS, stty -aet la description du terminal, en utilisant le premier de ceux qui a une valeur significative. eval $(resize)peut être utilisé pour les forcer à être synchronisés avec ce que le terminal pense de sa taille.
— geekosaur

notez que si vous avez des tabstops non standard (par exemple tabs 2dans votre .bashrc), vous devrez également utiliser le drapeau -t ou diff produira un résultat très bizarre
— Jeff
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.