2012-12-07 11 views
6

Ich benutze Emacs 24 und möchte eine Farbe von Verzeichnissen und Dateien ändern, während ich im Shell-Modus bin (ls Befehl). Im Idealfall - abhängig von den Rechten der Datei.Emacs, Wie ändert man einige Farben in M-x-Shell?

Wie kann ich das tun?

habe ich versucht, mit

(setq ansi-color-names-vector 
     ["black" "red" "green" "yellow" "PaleBlue" "magenta" "cyan" "white"]) 
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 

spielen, aber ich denke, es ist nicht für mich zu arbeiten.
Ich habe jetzt Solarized Farbschema. Aber ich möchte seine Farben nicht ändern, nur für den Shell-Modus.

Edit:
Als ich Farben für meinen System-Terminal (mit .dircolrs Datei in meinem Home-Verzeichnis) ändern - Emacs liest, aber es (Emacs) leicht veränderte Farben - es macht eine Farbe etwas dunkler oder leichter im Shell-Modus.

Und ich weiß nicht, warum Emacs es tut.

Verschiedene dirs Farben (Spiele, Öffentliche ...:
Das ist Systemterminal: enter image description here
Und das ist Emacs: enter image description here

Diese Farben geändert werden, mit Standardfarben und solari-Thema Emacs gemacht blau dirs auf einem blauen Hintergrund.

ich verstehe, dass es kein großes Problem ist ein Hack zu finden, möchte nur wissen, warum Emacs Farben ein wenig verändert.

+0

Meine Emacs-Shell verwendet die von 'zsh' gesetzten Schriftfarben mit der Hintergrundfarbe des Emacs-Puffers. Ist das nicht das, was du siehst? – asm

+0

@AndrewMyers, ich denke ja, dann muss ich die Farben in bash config ändern. Eigentlich wollte ich wissen, ob es in Emacs gemacht werden kann. – Sergey

+0

Ich sehe, wenn Sie 'M-x customize-group'' ansi-colors' machen, erhalten Sie eine anpassbare Gruppe? Ich sehe den Ansi-Farbnamen-Vektor dort. – asm

Antwort

5

H Das ist, was ich verwende, um Solarized-Farben für Emacs zu setzen. Ich ging weiter und postete meine gesamte Ansi-Term-Konfiguration für den Fall, dass andere Einstellungen nützlich sein könnten.

(use-package ansi-term 
    :defer t 
    :init 
    (progn 

    ;; ;; Use variable width font faces in current buffer 
    (defun my-buffer-face-mode-variable() 
    ;; "Set font to a variable width (proportional) fonts in current buffer" 
     (interactive) 
     (setq buffer-face-mode-face '(:family "Menlo For Powerline" :height 100)) 
     (text-scale-adjust 1) 
     (buffer-face-mode)) 

    (setq system-uses-terminfo nil) 
    (add-hook 'term-mode-hook 
       '(lambda() 
       (linum-mode 0) 
       (term-set-escape-char ?\C-z) 
       (term-set-escape-char ?\C-x) 
       (define-key term-raw-map "\C-c" 'term-interrupt-subjob) 
       (define-key term-raw-map (kbd "M-x") 'execute-extended-command) 
       (setq autopair-dont-activate t) 
       (setq ac-auto-start nil) 
       (visual-line-mode -1) 
       ;; (my-buffer-face-mode-variable) 
       )) 

    (defun my-term-paste (&optional string) 
     (interactive) 
     (process-send-string 
     (get-buffer-process (current-buffer)) 
     (if string string (current-kill 0)))) 

    (defun my-term-pasteboard-paste() 
     (interactive) 
     (process-send-string 
     (get-buffer-process (current-buffer)) 
     (ns-get-pasteboard))) 

    (add-hook 'term-exec-hook '(lambda() 
           (set-buffer-process-coding-system 'utf-8-unix 'utf-8-unix) 
           (goto-address-mode) 
           (define-key term-raw-map (kbd "C-y") 'my-term-paste) 
           (define-key term-raw-map (kbd "s-v") 'my-term-pasteboard-paste) 
           (let ((base03 "#002b36") 
             (base02 "#073642") 
             (base01 "#586e75") 
             (base00 "#657b83") 
             (base0 "#839496") 
             (base1 "#93a1a1") 
             (base2 "#eee8d5") 
             (base3 "#fdf6e3") 
             (yellow "#b58900") 
             (orange "#cb4b16") 
             (red "#dc322f") 
             (magenta "#d33682") 
             (violet "#6c71c4") 
             (blue "#268bd2") 
             (cyan "#2aa198") 
             (green "#859900")) 
            (setq ansi-term-color-vector 
             (vconcat `(unspecified ,base02 ,red ,green ,yellow ,blue 
                   ,magenta ,cyan ,base2)))))) 
+0

danke für die Antwort, es wäre sehr hilfreich für mich, aber ich habe gerade gefunden, was das Problem gelöst (Zumindest kann ich Farben jetzt manuell einstellen) – Sergey

7

Irgendwo fand ich das, und es half mir (ich einen kompletten Neuling bin, aber ich dachte, dass setq ansi-color-names-vector genug wäre):

(setq ansi-color-names-vector 
     ["black" "tomato" "PaleGreen2" "gold1" 
     "DeepSkyBlue1" "MediumOrchid1" "cyan" "white"]) 
(setq ansi-color-map (ansi-color-make-color-map))  # this helped 

Jetzt ansi-color-names-vector Werke in der Schale.

+0

Wissen Sie zufällig, ob es eine Möglichkeit gibt, diese Farbzuordnungen interaktiv zu testen? I.e. anstatt Shell nach jeder Änderung neu starten müssen – dolzenko

+0

@ dolzenko, weiß nicht, wie das geht – Sergey

6

M-x customize-variable RET ansi-color-names-vector RET

Bestehende Text nicht betroffen, aber neu Text (auch in dem gleichen Shell-Puffer) gedruckt wird die neuen Farben zeigen.

+0

Ich denke, das ist die beste Antwort.Nachdem Sie die Variable angepasst und gespeichert haben, können Sie Ihre .emacs-Datei überprüfen, um zu sehen, wie die Anpassung durchgeführt und gespeichert wurde. – Qrt

Verwandte Themen