2012-12-07 15 views
6

Używam Emacsa 24 i chcę zmienić kolor katalogów i plików, gdy jestem w trybie powłoki (komenda ls). Idealnie - w zależności od uprawnień pliku.Emacs, Jak zmienić kolory w powłoce M-x?

Jak mogę to zrobić?

Próbowałem grać z

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

Ale myślę, że to nie działa dla mnie.
Mam teraz koloryzowany schemat kolorów. Ale nie chcę zmieniać jego kolorów, tylko w trybie powłoki.

Edit:
Kiedy zmienić kolory dla mojego terminalu systemu (używając pliku .dircolrs w moim katalogu domowym) - Emacs czyta, ale to (emacs) nieznacznie zmienia kolory - to sprawia, że ​​kolor nieco ciemniejszy lub jaśniejsze w trybie powłoki.

I nie wiem, dlaczego Emacs to robi.

Różne katalogi kolory (gry, Public ...:
Jest to terminal systemu: enter image description here
A to Emacs: enter image description here

Są one zmienione kolory, z domyślnych kolorów i Emacs solarized-theme wykonanych niebieskie katalogi na niebieskim tle.

rozumiem, że nie jest to duży problem, aby znaleźć hack, po prostu chcą wiedzieć, dlaczego Emacs zmienia kolory trochę.

+0

Moja powłoka emacs używa kolorów czcionki ustawionych przez 'zsh' z kolorem tła bufora emacs. Czy to nie jest to, co widzisz? – asm

+0

@AndrewMyers, myślę, że tak, to muszę zmienić kolory w bash config. Właściwie to chciałem wiedzieć, czy można to zrobić w emacs. – Sergey

+0

Widzę, że jeśli wykonasz 'M-x customize-group'' ansi-colors' otrzymasz konfigurowalną grupę? Widzę tam wektor ansi-color-names-vector. – asm

Odpowiedz

5

H Jest to, czego używam do ustawienia kolorów Solarized dla emacs. Poszedłem naprzód i opublikowałem całą moją anonimową konfigurację, na wypadek, gdyby inne ustawienia były przydatne.

(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

dzięki za odpowiedź, byłoby to bardzo pomocne dla mnie, ale właśnie znalazłem to, co rozwiązało problem (przynajmniej mogę ręcznie ustawić kolory) – Sergey

7

Gdzieś znalazłem to, i to pomogło mi (jestem kompletny newbie, ale myślałem, że setq ansi-color-names-vector wystarczyłoby):

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

Teraz ansi-color-names-vector prace w powłoce.

+0

Czy wiesz przypadkiem, czy istnieje sposób interaktywnego przetestowania mapowania kolorów? To znaczy. zamiast ponownego uruchamiania powłoki po każdej zmianie – dolzenko

+0

@dolzenko, Nie wiem jak to zrobić – Sergey

6

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

istniejącego tekstu nie zostały naruszone, ale świeżo wydrukowany tekst (nawet w tym samym buforze powłoki) pokaże nowe kolory.

+0

Myślę, że to najlepsza odpowiedź.Po dostosowaniu zmiennej i zapisaniu jej można sprawdzić plik .emacs, aby zobaczyć, w jaki sposób dostosowywanie zostało wykonane i zapisane. – Qrt

Powiązane problemy