如何更改emacs上的光标颜色

时间:2011-01-10 00:42:48

标签: emacs colors cursor

我对Emacs的颜色进行了一些更改,现在唯一错误的是黑色背景上的黑色光标,我将不得不改变它。我该怎么办?

8 个答案:

答案 0 :(得分:39)

如果您运行的是最新版本的emacs,则可以使用:

; Set cursor color to white
(set-cursor-color "#ffffff") 

您可以使用您喜欢的任何颜色,而不是#ffffff。有关十六进制代码的列表谷歌说:http://www.tayloredmktg.com/rgb/


也许您喜欢这个...以下代码更改了每个闪烁上的光标颜色。只需eval代码及其运行:

; Using in Emacs 24.0 

(defvar blink-cursor-colors (list  "#92c48f" "#6785c5" "#be369c" "#d9ca65")
  "On each blink the cursor will cycle to the next color in this list.")

(setq blink-cursor-count 0)
(defun blink-cursor-timer-function ()
  "Zarza wrote this cyberpunk variant of timer `blink-cursor-timer'. 
Warning: overwrites original version in `frame.el'.

This one changes the cursor color on each blink. Define colors in `blink-cursor-colors'."
  (when (not (internal-show-cursor-p))
    (when (>= blink-cursor-count (length blink-cursor-colors))
      (setq blink-cursor-count 0))
    (set-cursor-color (nth blink-cursor-count blink-cursor-colors))
    (setq blink-cursor-count (+ 1 blink-cursor-count))
    )
  (internal-show-cursor nil (not (internal-show-cursor-p)))
  )

请注意,此代码将'frame.el'替换为emacs函数'blink-cursor-timer-function'。

答案 1 :(得分:14)

以上都不适合我,所以我自己做了一些研究。来自EmacsWiki:

  

14.20显示光标

     

在文本终端上,光标的外观由   终端,很大程度上不受Emacs的控制。一些终端提供   两个不同的游标:“可见”静态光标和“非常明显”   闪烁光标。默认情况下,Emacs使用非常明显的光标,和   启动或恢复Emacs时切换到它。如果变量   当Emacs启动或恢复时,visible-cursor为nil,它使用法线   光标。

     

在图形显示中,文本光标的更多属性可以是   改变。要自定义颜色,请更改:background属性   面部命名为光标(请参阅面部自定义)。 (其他属性   这张脸没有效果;绘制光标下显示的文本   使用框架的背景颜色。)要更改其形状,请自定义   buffer-local变量cursor-type;可能的值是框(   默认),空心(空心框),条形(垂直条),(条形.n)(a   垂直条n像素宽),hbar(水平条),(hbar.n)(a   水平条n像素高),或零(完全没有光标)。

     

要禁用光标闪烁,请将变量blink-cursor-mode更改为   nil(参见Easy Customization),或添加行(blink-cursor-mode 0)   你的init文件。或者,您可以更改光标的外观   当它通过自定义列表变量“闪烁”时   闪烁光标-ALIST。列表中的每个元素都应该有表单   (on-type.off-type);这意味着如果光标显示为   on-type,当它闪烁时(其中on-type是光标类型之一)   如上所述),当它闪烁时显示为关闭类型。

     

某些字符(例如制表符)是“超宽”的。当。。。的时候   光标位于这样的字符上,通常用它绘制   默认字符宽度。您可以将光标拉伸到覆盖范围   宽字符,通过将变量x-stretch-cursor更改为a   非零值。

     

光标通常在非选定窗口中显示为非闪烁   空心盒子。 (对于条形光标,它显示为更细的条形。)   要在非选定窗口中关闭游标,请更改变量   光标在非选定窗口中为nil。

     

要使光标更加明显,可以使用HL Line模式,a   次要模式,突出显示包含点的行。使用M-x   hl-line-mode在当前缓冲区中启用或禁用它。 M-X   global-hl-line-mode全局启用或禁用相同的模式。

所以这是做到这一点的方法: 1. M-x customize-face,输入 2. cursor输入 3.选择你喜欢的背景颜色。 4.单击状态,保存以供将来的会话使用。

屏幕截图:

enter image description here

enter image description here

enter image description here

enter image description here

答案 2 :(得分:9)

试试这个:

(setq default-frame-alist
  '((cursor-color . "palegoldenrod")))

如果你想保留default-frame-alist中的其他值,你可以马克的建议:

(add-to-list 'default-frame-alist '(cursor-color . "palegoldenrod"))

答案 3 :(得分:5)

如果您使用X窗口系统,请尝试将此类内容添加到.Xdefaults

*cursorColor: #ff7700

答案 4 :(得分:1)

您可以使用它来自定义emacs颜色:

(defun good-colors ()
  (progn
     ;; Set cursor color
     (set-cursor-color "Black")

     (set-background-color "grey46")
     (set-foreground-color "White")
     (set-border-color "dark orange")
     (set-mouse-color "dark orange") 
))

(good-colors)

答案 5 :(得分:1)

还有一个命令行选项:

--cursor-color, -cr COLOR       color of the Emacs cursor indicating point

答案 6 :(得分:0)

请记住,如果您使用的是iTerm2,则必须对其设置进行更改,否则,.emacs配置文件上的更改将不会发生。

Preferences => Profiles => Color => Cursor Colors

enter image description here

答案 7 :(得分:0)

对我来说,根据其他答案的建议将init的光标颜色设置为init不会真正起作用,因为可能会干扰我正在加载的主题和包。我的解决方案是添加以下内容:

(add-hook 'after-init-hook
          (lambda () (run-with-timer 5 nil #'set-cursor-color "SystemRedColor")))

该解决方案使得调用set-cursor-color的操作仅在初始化完成后5秒钟发生,从而有足够的时间使所有其他包和主题更改完全加载。