35

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

4

8 回答 8

44

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

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

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


也许你喜欢这个……下面的代码在每次闪烁时改变光标颜色。只需评估代码及其运行:

; 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”。

于 2011-02-08T12:23:06.790 回答
20

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

14.20 显示光标

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

在图形显示上,可以更改文本光标的更多属性。要自定义其颜色,请更改名为 cursor 的面的 :background 属性(请参阅面自定义)。(这个面的其他属性没有影响;光标下显示的文本是使用框架的背景颜色绘制的。)要改变它的形状,自定义缓冲区局部变量cursor-type;可能的值是 box(默认)、hollow(空心盒子)、bar(垂直条)、(bar .n)(垂直条 n 像素宽)、hbar(水平条)、(hbar .n) (一个水平条 n 像素高)或 nil(根本没有光标)。

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

某些字符(例如制表符)是“超宽”的。当光标位于此类字符上时,通常使用默认字符宽度绘制。您可以通过将变量 x-stretch-cursor 更改为非 nil 值来使光标拉伸以覆盖宽字符。

光标通常以不闪烁的空心框形式出现在未选择的窗口中。(对于条形光标,它显示为更细的条形。)要关闭非选定窗口中的光标,请将变量 cursor-in-non-selected-windows 更改为 nil。

为了使光标更加明显,您可以使用 HL 线模式,这是一种突出显示包含点的线的次要模式。使用 Mx hl-line-mode 在当前缓冲区中启用或禁用它。Mx global-hl-line-mode 全局启用或禁用相同的模式。

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

截图在这里:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2014-06-15T22:40:36.647 回答
11

试试这个:

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

如果您想保留其他值,default-frame-alist可以参考 Mark 的建议:

(add-to-list 'default-frame-alist '(cursor-color . "palegoldenrod"))
于 2011-01-10T01:29:22.483 回答
5

如果您使用 X 窗口系统,请尝试将以下内容放入.Xdefaults

*cursorColor: #ff7700
于 2011-09-26T18:08:22.437 回答
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)
于 2011-02-08T12:36:41.350 回答
1

还有一个命令行选项:

--cursor-color, -cr COLOR       color of the Emacs cursor indicating point
于 2014-01-08T18:54:50.633 回答
1

请记住,如果您正在使用iTerm2,则必须更改其设置,否则.emacs不会更改配置文件。

Preferences => Profiles => Color => Cursor Colors

在此处输入图像描述

于 2020-06-28T13:51:28.650 回答
1

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

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

这个解决方案使得对 set-cursor-color 的调用只会在 init 完成后 5 秒发生,从而为所有其他包和主题更改提供足够的时间来完全加载。

于 2020-08-11T18:07:55.387 回答