UP | HOME

use-package教程

目录

配置参数

:init 加载前准备

定义代码在包加载前执行,可用来设置影响 package 加载过程的变量。 即使配置的 package 不存在, :init 部分的代码也会执行,所以该部分代码应该保证 package 不存在也可以执行成功。

:config 加载后配置

定义代码在包加载之后执行,主要用在对package进行配置。在延迟加载的情况下,执行会被放在延迟加载之后

:commands 自动加载命令

command 关键字会为命令创建自动加载(autoload),他的参数是 symbol 或 symbol 列表

:bind

bind 关键字用来设置键绑定,接受一个cons或者cons列表

(use-package ace-jump-mode
:bind ("C-." . ace-jump-mode))

这会做两件事情,首先为 ace-jump-mode 命令创建自动加载,然后直到真正使用的时候延时加载。再将键 C-. 绑定至该命令,然后你就可以用 M-x describe-personal-keybindings 去查看键绑定了

:bind-keymap

通常 bind 期望commands是从给定包中自动加载的函数。但是,如果这些命令实际上是键映射,则这不起作用,因为键映射不是功能,不能使用Emacs的自动加载机制自动加载。 针对这种场景, bind-keymap 的commands对应的是包中定义的keymap

:map 局部键绑定

局部 keymap 的键绑定只有在 package 加载后才生效。

(use-package helm
:bind (:map helm-command-map
        ("C-c h" . helm-execute-persistent-action)))

上述配置等同于 helm 加载之后,将 C-c h 按键绑定到 helm-execute-persistent-action

:disable

:disable 关键字可以关闭遇到困难的模块,或者停止加载目前未使用的某个模块

:load-path 扩展加载路径

如果 pacakge 的加载需要将一个目录添加到 load-path 中,使用 :load-path 。参数可以是一个符号、函数、字符串或字符串列表。如果是相对路径,基于 user-emacs-directory 进行扩展。

:ensure 自动安装

可以使用 use-package 配合 package.el 从 ELPA 加载 pacakge。这对于在多个机器之间共享.emacs 很有用;在.emacs 中声明的 package 都会自动下载。 :ensure 关键字会自动安装系统没有的 package。 如果希望所有包 package 都这样处理,需要设置

(setq use-package-always-ensure t)
主动更新

:ensure 会安装系统上没有的 package,但不会进行主动更新。如果希望主动更新,可以使用 auto-package-update

(use-package auto-package-update
   :config
   (setq auto-package-update-delete-old-versions t)
   (setq auto-package-update-hide-results t)
   (auto-package-update-maybe))

:mode :interpreter 模式和解释器

类似 :bind ,可以使用 :mode:interpreter 在变量 auto-mode-alistinterpreter-mode-alist 中建立延迟绑定。这些关键字的参数可以是 cons、 列表、字符串或正则表达式。

(use-package ruby-mode
:mode "\\.rb\\'"
:interpreter "ruby")

;; The package is "python" but the mode is "python-mode":
(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode))

hook 钩子

:hook 关键字允许在钩子上添加函数,这里只需要钩子的基本名称。

:defer 延迟加载

如果没有使用 :commands, :bind, :bind*, :bind-keymap, :bind-keymap*, :mode, :interpreter, or :hoo 可以使用 :defer 关键字实现延时加载

:after

有时,只有在另一个 package 加载之后,加载当前 package 才有意义,因为有些变量或函数此前不在作用域内。这可以通过 :after 关键字来实现,该关键字允许设置相当丰富的加载条件。

:require

:after 可以让 package 在依赖加载后才加载,但如果依赖不可用时, :require 关键字更简单些,它不会加载该 package。

:custom 自定义变量

:custom 关键字允许设置 package 的自定义变量。

(use-package comint
 :custom
 (comint-buffer-maximum-size 20000 "Increase comint buffer size.")
 (comint-prompt-read-only t "Make the prompt read only."))

作者: Rand01ph

Created: 2019-01-24 四 13:55