Emacs 初始化文件

1.1 Emacs 是一个强大的文本编辑器,它在启动时会尝试从一个初始化文件中加载 Lisp 程序,以便为用户初始化 Emacs。

默认情况下,Emacs 会尝试从用户的主目录中加载名为 .emacs 的文件,如果该文件存在,则会使用该文件的配置来初始化 Emacs。

但是,用户也可以使用其他文件名,如 .emacs.el.emacs.d/init.el.config/emacs/init.el

此外,Emacs 还可以加载一个默认的初始化文件,该文件名为 default.el,它位于 Emacs 的标准搜索路径中,并且在用户的初始化文件之前加载。

用户可以通过设置变量 inhibit-default-init 来避免加载默认的初始化文件。此外,Emacs 还可以加载一个站点启动文件,该文件名为 site-start.el,它位于 Emacs 的标准搜索路径中,并且在用户的初始化文件之前加载。用户可以通过使用 “--no-site-file” 选项来避免加载站点启动文件。


初始化文件格式

Emacs 初始化文件中包含一个或多个 Lisp 表达式,每个表达式都包含一个函数名和参数,用括号括起来。常用的函数是 setq,用于设置变量的值。然而,有些变量需要使用 setq-default 来设置默认值。常量可以是数字、字符串、字符、布尔值,或其他 Lisp 对象。字符串和字符的语法规则也有所区别。


更新配置而无需重启

在 Emacs 中编辑 init.el 文件并使修改即时生效,是一项很实用的功能,特别是对于喜欢实时调整配置的用户来说。这里有一些步骤和命令可以帮助你达成这个目的:

  1. 打开 init.el 文件:

    • 你可以使用内置的 find-file 命令来打开 init.el 文件。通常这个文件位于你的用户目录下的 .emacs.d 文件夹中。你可以按下 M-x (Alt + x) 来调用命令输入界面,然后输入 find-file,再输入 ~/.emacs.d/init.el 来打开文件。
  2. 编辑并保存你的配置:

    • init.el 文件中进行所需的更改,这可能包括添加新的插件配置、键绑定或其他 Emacs 功能设置。
    • 保存文件:你可以使用快捷键 C-x C-s(即 Ctrl + x 然后 Ctrl + s)来保存你的更改。
  3. 使更改即时生效:

    • 要使 init.el 中的更改立即生效,你可以使用 eval-buffer 命令来评估当前缓冲区(即 init.el 文件)。这可以通过 M-x eval-buffer 来完成。
    • 另一种方法是选择你更改的部分代码,然后使用 eval-region 命令(可以通过 M-x eval-region 调用),这样只有选定区域的代码会被评估和执行。
  4. 使用快捷键:

    • 你可以设置快捷键来快速打开 init.el 或执行上述评估操作。例如,添加如下代码到你的 init.el 中:
      (global-set-key (kbd "C-c i") (lambda () (interactive) (find-file "~/.emacs.d/init.el")))
      (global-set-key (kbd "C-c e") 'eval-buffer)
      
    • 这样,你可以通过按 C-c i 快速打开 init.el,通过 C-c e 来评估整个 init.el 的更改。

实验发现,C-c e 可以不用设置,已经有 C-c C-e 快捷键负责 eval-buffer 了。


示例:修改 load-path

向变量 load-path 添加一个目录。然后,您可以将 Emacs 中未包含的 Lisp 库放在此目录中,并使用 M-x load-library .

(add-to-list 'load-path "/path/to/lisp/libraries")

示例:加载库

加载已安装的 Lisp 库,命名为 foo (实际上是一个文件 foo.elc 或 foo.el 在标准 Emacs 目录中)。

(load "foo")

也支持直接传入路径:

(load "~/foo.elc")

注:.elc 表示经过编译的 elisp 代码。


示例:使用 use-package 加载包

(use-package hi-lock
  :defer t
  :init (add-hook 'some-hook 'hi-lock-mode)
  :config (use-package my-hi-lock)
  :bind (("M-o l" . highlight-lines-matching-regexp)
         ("M-o r" . highlight-regexp)
         ("M-o w" . highlight-phrase)))

本文作者:Maeiee

本文链接:Emacs 初始化文件

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!