Wie werden Emacs-Terminalfarben mit Emacs-GUI-Farben identisch?

70

Ich programmiere mit Emacs unter Ubuntu (im Moment Hardy Heron) und ich mag die Standardtextfärbung in der Emacs-GUI. Die Standardtextfarbe, wenn Emacs im Terminal ausgeführt wird, ist jedoch unterschiedlich und grell.

Wie stelle ich sicher, dass die Farben im Terminal mit den Farben in der GUI übereinstimmen?

Zak
quelle
2
Ich möchte das Gegenteil erreichen. Ich mag Syntaxfarben im -nwModus. Ist das möglich?
aL3xa
Sie müssen wissen, welches Standardfarbthema beim Ausführen von Emacs verwendet -nwwird.
SabreWolfy
2
Auch ich möchte die Lösung für das entgegengesetzte Problem wissen. Wie setze ich das Farbthema in Emacs so, dass es dem Farbthema in Emacs -nw ähnelt?
Bart Snapp

Antworten:

121

Sie müssen sich nicht an die Standardfarben Ihres Terminals von 16 (oder weniger) halten. Moderne Terminals unterstützen 256 Farben (wodurch Sie Ihrem GUI-Look ziemlich nahe kommen).

Leider ist es schwierig, Ihr Terminal dazu zu bringen, 256 Farben zu unterstützen, und es variiert von Begriff zu Begriff. Diese Seite hat mir sehr geholfen (aber sie ist veraltet; ich habe definitiv 256 Farben in Gnome-Terminal und XFCE4-Terminal erhalten; aber Sie müssen sie möglicherweise aus dem Quellcode erstellen.)

Sobald Ihr Terminal mit 256 Farben zufrieden ist, setzt der magische Aufruf Ihren Terminaltyp auf "xterm-256color", bevor Sie Emacs aufrufen, z.

env TERM=xterm-256color emacs -nw

Oder Sie können TERM in Ihrer .bashrcDatei festlegen :

export TERM=xterm-256color

Sie können überprüfen, ob es in Emacs funktioniert, indem M-x list-colors-displaySie entweder 16 oder alle 256 herrlichen Farben anzeigen.

Wenn es funktioniert, sehen Sie color-themewie jemand anderes vorgeschlagen.

(Sie werden wahrscheinlich irgendwann frustriert sein; Gott weiß, dass ich es jedes Mal tue, wenn ich versuche, etwas Ähnliches zu tun. Aber bleiben Sie dabei; es lohnt sich.)

fade
quelle
2
Das ist großartig. Ich habe meinem .profile "export TERM = xterm-256color" hinzugefügt, damit ich es nicht jedes Mal ausführen muss.
Matti Pastell
Sie können TERM=xterm-256color emacsEmacs auch mit einem 256-Farben-Terminal starten, ohne die Umgebungsvariable zu exportieren.
SabreWolfy
Mein Emac ändert seine Palette, wenn er von einem 88- oder 256-Farben-Terminal sowie mit TERM = xterm-256color oder TERM = rxvt-unicode-256color ausgeführt wurde. Aber keine dieser Paletten ist eine, die ich in der X-Version angepasst habe.
Tijagi
2
Falls jemand anderes hierher kommt, während er nach einer Lösung für die Ausführung emacs -nwin einem iTerm-Fenster unter Mac OS X sucht , beachten Sie, dass Sie iTerm anweisen können, den Terminaltyp als zu melden xterm-256color. Gehen Sie zu Einstellungen ➜ Profile ➜ Terminal und setzen Sie das Feld "Terminal-Typ melden".
Mhucka
2

Ich bin mir nicht sicher, ob dies möglich ist, da die GUI möglicherweise mehr Funktionen als das Terminal bietet (ja, ich habe in letzter Zeit GUI-Terminals mit nur 16 Farben gesehen). Dies kann davon abhängen, wie das Terminal eingestellt ist. Auf jeden Fall würde ich mit Color Theme spielen .

Warum verwenden Sie Emacs sowohl im Terminal als auch in der GUI? Im Allgemeinen finden die Leute das eine oder andere ansprechend und verwenden nur das eine. Wenn Sie Emacs remote verwenden, möchten Sie es möglicherweise lokal ausführen und Tramp verwenden , um Dateien remote oder als Root zu öffnen.

pupeno
quelle
Ein häufiger Anwendungsfall besteht darin, die GUI-Version lokal und in der Befehlszeile remote zu verwenden, möglicherweise über mehrere Schichten von SSH-Verbindungen auf einer Vielzahl von Computern verschachtelt.
Quazgar
0

Eine etwas späte Antwort, aber ich hatte das Problem, dass der schwarze Hintergrund grau angezeigt wurde. Ich habe es behoben, indem ich mit der Palette herumgespielt habe.

Bearbeiten> Profileinstellungen> Farbe> Palette

Ali Zand
quelle
0

Ich konnte mit Emacs 26 ziemlich nahe kommen.

Ich habe die Emacs-FAQ befolgt, um 24-Bit-Farben zum Laufen zu bringen: https://www.gnu.org/software/emacs/manual/html_mono/efaq.html#Colors-on-a-TTY

Und dann habe ich die Variable xterm-Standardfarben geändert:

(set 'xterm-standard-colors
  '(("black"          0 (  0   0   0))
    ("red"            1 (255   0   0))
    ("green"          2 (  0 255   0))
    ("yellow"         3 (255 255   0))
    ("blue"           4 (  0   0 255))
    ("magenta"        5 (255   0 255))
    ("cyan"           6 (  0 255 255))
    ("white"          7 (255 255 255))
    ("brightblack"    8 (127 127 127))
    ("brightred"      9 (255   0   0))
    ("brightgreen"   10 (  0 255   0))
    ("brightyellow"  11 (255 255   0))
    ("brightblue"    12 (92   92 255))
    ("brightmagenta" 13 (255   0 255))
    ("brightcyan"    14 (  0 255 255))
    ("brightwhite"   15 (255 255 255)))
  )

(Ich habe die "hellen *" Farben nicht geändert, weil ich sie nicht verwende, und sie scheinen list-colors-displaysowieso nicht in X11-Emacs verfügbar zu sein.)

Mit diesen beiden Änderungen sehen die Farben für mich zwischen X11 und Terminal ziemlich identisch aus.

Arseniy Alekseyev
quelle
-1

Ich denke nicht, dass das so allgemein möglich ist. Mit dem Terminal sind Sie normalerweise an einige vordefinierte Farben gebunden (mit Dingen wie dem Gnome-Terminal können Sie diese Farben anpassen - aber Sie bleiben bei einer vordefinierten, begrenzten Anzahl von Farben).

HD.
quelle