2012-12-07 29 views
6

私はEmacs 24を使用しており、シェルモード(lsコマンド)中にdirsとファイルの色を変更したいと思います。理想的には、ファイルの権利によって異なります。Emacs、M-xシェルで色を変えるには?

どうすればいいですか?

私は

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

で遊んでみました。しかし、私はそれが私のために動作しませんと思います。
私は今太陽系化された配色を持っています。しかし、私は色を変更したくない、シェルモードの場合のみ。

編集:
私は(私のホームディレクトリの.dircolrsファイルを使用して)私のシステム端末の色を変更する - Emacsがそれを読み、しかしそれ(Emacsが)多少の色を変更する - それは色が少し暗くなりますシェルモードでは軽量です。

なぜ私はEmacsがそれをするのか分かりません。

異なるdirsに色(ゲーム、公共...:これは、システム端末
です: enter image description here
そして、これは、Emacsです:enter image description here

は、これらが作ったデフォルトの色とsolarized-テーマのEmacsで、色を変えています青色の背景に青のdirs。

私は、それがハックを見つけることは大きな問題ではないことを理解しちょうどEmacsは色ビットを変更する理由を知りたい。

+0

私のemacsシェルは、 'zsh'で設定したフォントの色をemacsバッファの背景色で使います。これはあなたの見たものではありませんか? – asm

+0

@AndrewMyers、私はそう思う、私はbashの設定で色を変更する必要があります。実際に私はそれがemacsで行うことができるかどうかを知りたいと思っていました。 – Sergey

+0

'M-x customize-group'' ansi-colors'を実行すると、カスタマイズ可能なグループが得られますか?そこにはアンサイカラー名のベクトルがあります。 – asm

答えて

5

H私はemacsのためのSolarized色を設定するために使用するものです。私は先に進み、他の設定が役に立つかもしれない場合に備えて、私のansi-term設定全体を投稿しました。

(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

答えがありがとう、それは非常に役に立ちます。 (少なくとも私は手動で色を設定することができます) – Sergey

7

どこか私はこれを発見し、それは(私は完全な初心者だけど、私はsetq ansi-color-names-vectorは十分だろうと思った)私を助け:シェルで

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

ansi-color-names-vector作品。

+0

これらのカラーマッピングをインタラクティブにテストする方法があるのか​​どうか知っていますか?私。変更するたびにシェルを再起動する必要はありません。 – dolzenko

+0

@dolzenko、その方法を知らない – Sergey

6

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

既存のテキストには影響されていませんが、(たとえ同じシェルバッファ内)、新たに印刷されたテキストは、新しい色が表示されます。

+0

これは最良の答えだと思います。変数をカスタマイズして保存したら、.emacsファイルを調べてカスタマイズの実行方法と保存方法を確認できます。 – Qrt