Mercurial. Farbausgabe auf weniger übertragen

35

Betriebssystem: Mac OS 10.6.2

Ich möchte in der Lage sein, die Farbausgabe zu sehen, wenn bestimmte Befehle durch weniger geleitet werden.

Zwei Beispiele:

Ich habe ls Alias ​​zu ls --color=auto, also möchte ich in der Lage sein, Farbe zu sehen, wenn ich das tue:

ls -l | less

Ich habe auch die Farberweiterung in Mercurial aktiviert, daher möchte ich die Farbausgabe von:

hg diff | less

und

hg st | less

Nach einigem googeln scheint es, als ob einige Versionen von weniger entweder -r oder -R unterstützen, damit dies funktioniert, aber für mich keine Würfel. Ich kann in der Manpage nichts sehen, was so aussieht, wie ich es brauche. (-r oder -R scheinen die richtigen Optionen zu sein, aber sie scheinen auch nicht zu funktionieren)

mmacaulay
quelle
1
Es sieht so aus, als ob die Farberweiterung immer deaktiviert ist, wenn eine Pipe ausgeführt wird. Probieren Sie diese Befehle aus, um zu sehen, was ich meine: ls --color=always | ls -Rundhg diff --config color.mode=ansi | less -R
Harvey

Antworten:

30

Für mercurial sollten Sie die Pager-Erweiterung verwenden, anstatt explizit auf weniger zu leiten. Dies passt gut zu den farbigen Ausgabeoptionen anderer hg-Befehle.

richq
quelle
13

Ich glaube , Sie verwenden müssen --color=alwaysfür , lswenn Sie wollen , dass es Farben zu tun , auch wenn sie nicht zu gehen stdout. Dann -rauf den lessBefehl anwenden

ls --color=always -l | less -r
Brandon Bodnar
quelle
12

Tragen Sie in Ihre ~ / .hgrc ein:

[extensions]
color =
pager =

[pager]
pager = LESS='FRSXQ' less
quiet = True
attend = outgoing,incoming,diff,status,log,qdiff,blame,annotate,pdiff,glog
Joe HG
quelle
Warum das quiet = TrueTeil?
einpoklum - wieder Monica
Nett! Ich empfehle LESS='eiFRSXQ', auch nach Erreichen von EOF zu beenden und die Groß- / Kleinschreibung bei der Suche zu ignorieren
Sebastian
11

Machen:

$ hg diff --color always | less -R

Ich würde alias "weniger -R" zu weniger. Ich bin mir nicht sicher , ob es einen Weg gibt Standardoptionen Mercurial Befehle zu liefern , so dass Sie nicht haben , zu erinnern , geben --color alwaysfür die hg diffganze Zeit.

stantonk
quelle
1
Oder verwenden Sie $ hg diff --color always | less -FRSXQfür bessere weniger Optionen. Es wird stillschweigend beendet, wenn Diff zum Beispiel auf den Bildschirm passt.
Jpbochi
1
Sie können LESS = "- R" alternativ zum Aliasing "less" selbst einrichten.
bläulich
-Fist, die Datei während der Produktion weiterzulesen -S, keine Zeilenumbrüche zu machen, -Xetwas Unklares, -Qdas das Klingeln der Terminalklingel vermeidet.
Evgeni Sergeev
2

Wenn Sie die Pager-Erweiterung nicht für Mercurial verwenden möchten, können Sie den folgenden Befehl verwenden:

hg diff | cdiff
Gute Person
quelle
0

ls --color=autobedeutet, dass Sie eine Farbausgabe erhalten, wenn diese nicht an etwas weitergeleitet wird. Versuchen Sie es ls --colour=auto | catund Sie werden sehen, was ich meine.

Ich gehe davon aus, dass hg ähnliche Annahmen trifft.

keturn
quelle