簡體   English   中英

Emacs,如何更改 Mx shell 中的一些顏色?

[英]Emacs, How to change some colors in M-x shell?

我使用 Emacs 24 並希望在處於 shell 模式( ls命令)時更改目錄和文件的顏色。 理想情況下 - 取決於文件的權限。

我怎樣才能做到這一點?

我試着玩

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

但我認為這對我不起作用。
我現在有曝光配色方案。 但我不想改變它的顏色,只針對 shell 模式。

編輯:
當我為我的系統終端更改顏色時(使用我的主目錄中的 .dircolrs 文件)- emacs 讀取它,但它(emacs)稍微改變了顏色 - 它使顏色在 shell 模式下更暗或更亮。

而且我不知道為什么 Emacs 會這樣做。

不同的 dirs 顏色(游戲,公共...:
這是系統終端:在此處輸入圖像描述
這是 Emacs:在此處輸入圖像描述

這些是更改后的顏色,默認顏色和曝光主題 Emacs 在藍色背景上制作藍色目錄。

我明白找到hack問題不大,只是想知道為什么Emacs會稍微改變顏色。

Mx customize-variable RET ansi-color-names-vector RET

現有文本不會受到影響,但新打印的文本(即使在同一個 shell 緩沖區中)將顯示新顏色。

我在某個地方找到了這個,它對我有幫助(我是一個完全的新手,但我認為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))  ;; helped line

現在ansi-color-names-vector在 shell 中工作。

這是我用來為 emacs 設置曝光顏色的方法。 我繼續並發布了我的整個 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))))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM