Consult 提供基于 Emacs 补全功能 finish-read 的搜索和导航命令。完成使您可以从候选列表中快速选择一个项目。 Consult 提供异步和交互式的consult-grep
和consult-ripgrep
命令,以及基于行的搜索命令consult-line
。此外,Consult 还提供了一个高级缓冲区切换命令consult-buffer
用于在缓冲区、最近打开的文件、书签和来自其他来源的类似缓冲区的候选者之间进行切换。一些 Consult 命令是内置 Emacs 命令的增强版本。例如,命令consult-imenu
显示Imenu的平面列表,具有实时预览、分组和缩小范围。请查看完整的命令列表。
Consult 与以标准 Emacs completing-read
API 为中心的完成系统完全兼容,特别是默认的完成系统 Vertico、Mct 和 Icomplete。
该软件包将完成系统的细节保持在最低限度。 Consult 命令与任意完成系统良好配合的能力是该软件包的主要优点之一。 Consult 非常适合现有设置,它可以帮助您使用小型独立组件创建完整的完成环境。
您可以将补充包 Marginalia、Embark 和 Orderless 与 Consult 结合起来。 Marginalia 通过注释丰富了完成显示,例如文档字符串或文件信息。多功能的 Embark 包提供了类似于上下文菜单的本地操作。这些操作对迷你缓冲区中或普通缓冲区中的选定候选点进行操作。例如,当从文件列表中进行选择时,Embark 会提供删除文件的操作。此外,Embark 还提供了在收集缓冲区中收集完成候选者的功能。 Embark 集成部分详细记录了 Consult 和 Embark 如何协同工作。
图1:命令consult-git-grep
图2:命令consult-imenu
图3:命令consult-line
大多数 Consult 命令都遵循有意义的命名方案consult-
。许多命令都实现了一个鲜为人知但方便的 Emacs 功能,称为“未来历史”,它会猜测用户想要什么输入。在命令提示符下键入Mn
,通常 Consult 会将符号或事物插入到输入中。
提示:如果您激活了 Marginalia 注释器,请输入Mx ^consult
以查看所有咨询命令及其缩写说明。或者,输入Ch a ^consult
以获取所有 Consult 变量和函数及其描述的概述。
consult-buffer
: switch-to-buffer
的增强版本,支持虚拟缓冲区。支持缓冲区实时预览并缩小虚拟缓冲区类型。您可以键入f SPC
以缩小到最近的文件。按SPC
显示临时缓冲区。支持的缩小键:recentf-mode
)consult-buffer-sources
中配置的自定义其他源。consult-buffer-other-window
、 consult-buffer-other-frame
、 consult-buffer-other-tab
: consult-buffer
的变体。consult-project-buffer
: consult-buffer
的变体仅限于当前项目的缓冲区和最近的文件。您可以将自定义源添加到consult-project-buffer-sources
。如果您从项目外部调用该命令,则该命令可能会提示您输入项目。consult-bookmark
:选择或创建书签。要选择书签,您可以使用consult-buffer
作为替代方案,其中可以包含书签虚拟缓冲区源。请注意, consult-bookmark
支持书签预览和缩小范围。consult-recent-file
:从最近的文件中选择并进行预览。您可能更喜欢强大的consult-buffer
,它可以包含最近的文件作为虚拟缓冲区源。 recentf-mode
可以跟踪最近的文件。 consult-yank-from-kill-ring
:增强版的yank
用于从kill-ring
中选择项目。选定的文本在缓冲区中预览为叠加。consult-yank-pop
:具有 DWIM 行为的yank-pop
的增强版本,它可以通过循环kill-ring
来替换最后一次yank
,或者如果没有最后一次yank
则咨询kill-ring
。选定的文本在缓冲区中预览为叠加。consult-yank-replace
:与consult-yank-pop
类似,但始终用kill-ring
中的项目替换最后一个yank
。consult-kmacro
:从宏环中选择宏并执行它。 consult-register
:从寄存器列表中选择。该命令支持缩小注册类型和预览标记位置。该命令对于搜索寄存器内容很有用。要快速访问,请使用命令consult-register-load
、 consult-register-store
或内置 Emacs 注册命令。consult-register-format
:将register-preview-function
设置为此函数以增强寄存器格式。请参阅示例配置。consult-register-window
:用此函数替换register-preview
以获得更好的注册窗口。请参阅示例配置。consult-register-load
:快速加载寄存器的实用命令。该命令要么跳转到寄存器值,要么插入它。consult-register-store
:改进了 UI,以根据当前上下文和操作菜单存储寄存器。对于活动区域,存储/追加/前置内容,可以选择在给出前缀参数时删除该区域。使用数字前缀参数,存储/添加数字。否则存储点、框架集、窗口或 kmacro。用法示例:M-' x
:如果没有区域处于活动状态,则将点存储在寄存器x
中。如果某个区域处于活动状态,则将该区域存储在寄存器x
中。M-' Mw x
:将窗口配置存储在寄存器x
中。Cu 100 M-' x
:将数字存储在寄存器x
中。 consult-goto-line
:跳转到通过实时预览增强的行号。这是goto-line
的直接替代品。输入行号以跳转到给定行的第一列。或者输入line:column
以跳转到特定列。consult-mark
:跳转到mark-ring
中的标记。支持实时预览和递归编辑。consult-global-mark
:跳转到global-mark-ring
中的标记。支持实时预览和递归编辑。consult-outline
:跳转到大纲的标题。支持缩小到标题级别、实时预览和递归编辑。consult-imenu
:跳转到当前缓冲区中的 imenu 项。支持实时预览、递归编辑和缩小范围。consult-imenu-multi
:跳转到项目缓冲区中的 imenu 项,与当前缓冲区具有相同的主模式。支持实时预览、递归编辑和缩小范围。此功能的灵感来自 imenu-anywhere。 consult-line
:输入搜索字符串并从匹配行中进行选择。支持实时预览和递归编辑。该点的符号和最近的 Isearch 字符串将被添加到“未来历史记录”中,并且可以通过按Mn
来访问。当consult-line
绑定到isearch-mode-map
并在运行 Isearch 期间调用时,它将使用当前的 Isearch 字符串。consult-line-multi
:跨多个缓冲区动态搜索。默认情况下跨项目缓冲区搜索。如果使用前缀参数调用,则在所有缓冲区中搜索。根据输入按需计算候选者。该命令的行为类似于consult-grep
,但对缓冲区而不是文件进行操作。consult-keep-lines
:替换keep/flush-lines
,它使用当前完成样式来过滤缓冲区。该函数在键入时更新缓冲区。特别是, consult-keep-lines
可以进一步缩小导出的 Embark 收集缓冲区的范围,依赖于与completing-read
相同的完成过滤。如果输入以否定运算符开头,即! SPC
,过滤器匹配补码。如果某个区域处于活动状态,则该区域会限制过滤。consult-focus-lines
:通过使用当前完成样式过滤行来暂时隐藏行。使用Cu
前缀参数调用以再次显示隐藏线。如果输入以否定运算符开头,即! SPC
,过滤器匹配补码。与consult-keep-lines
相比,此函数不会编辑缓冲区。如果某个区域处于活动状态,则该区域会限制过滤。 consult-grep
、 consult-ripgrep
、 consult-git-grep
:在文件中搜索正则表达式。当您输入搜索词时,Consult 会异步调用 Grep。至少在consult-async-min-input
个字符之后,搜索开始。如果第一个字符是标点符号,例如#
,Consult 会将输入字符串分成两部分。例如#regexps#filter-string
,在第二个#
处分割。字符串regexps
被传递给 Grep。请注意,Consult 将 Emacs 正则表达式转换为搜索程序可以理解的表达式。始终在提示符下使用 Emacs 正则表达式。如果输入多个以空格分隔的正则表达式,则仅显示与所有正则表达式匹配的行。为了从字面上匹配空格,请使用反斜杠转义空格。 filter-string
被传递到快速Emacs 过滤以进一步缩小匹配列表的范围。如果您使用无序等高级完成样式,这尤其有用。 consult-grep
支持预览。如果找到项目, consult-grep
会搜索当前项目目录。否则将搜索default-directory
。如果使用前缀参数Cu Ms g
调用consult-grep
,您可以手动指定一个或多个以逗号分隔的文件和目录。如果使用两个前缀参数Cu Cu Ms g
调用,如果您尚未进入项目,则可以首先选择一个项目。consult-find
、 consult-fd
、 consult-locate
:通过将路径与正则表达式匹配来查找文件。与consult-grep
一样,项目根目录或当前目录都是搜索的根目录。输入字符串的处理方式与consult-grep
类似,其中第一部分传递给 find,第二部分用于 Emacs 过滤。 consult-find
的前缀参数的工作方式与 Consult grep 命令的前缀参数类似。 consult-compile-error
:跳转到编译错误。支持实时预览缩小和递归编辑。consult-flymake
:跳转到 Flymake 诊断。支持实时预览和递归编辑。该命令支持缩小范围。按e SPC
、 w SPC
、 n SPC
分别仅显示错误、警告和注释。consult-xref
:与外部参照集成。该函数可以设置为xref-show-xrefs-function
和xref-show-definitions-function
。 consult-complex-command
:从command-history
记录中选择一个命令。该命令是repeat-complex-command
的completing-read
版本,也是chistory.el 中command-history
命令的替代品。consult-history
:插入当前缓冲区历史记录中的字符串,例如 Eshell 或 Comint 历史记录。您还可以从迷你缓冲区调用此命令。在这种情况下, consult-history
使用存储在minibuffer-history-variable
中的历史记录。如果您更喜欢completion-at-point
,请查看 Cape 包中的cape-history
。consult-isearch-history
:在 Isearch 会话期间,此命令从历史记录中选择一个搜索字符串,并使用新选择的字符串继续搜索。在 Isearch 之外,该命令允许您从历史记录中选择一个字符串并启动新的 Isearch。 consult-isearch-history
充当isearch-edit-string
的直接替代品。 consult-minor-mode-menu
:启用/禁用次要模式。支持分别按i/o/l/g SPC
缩小到开/关/本地/全局模式。consult-mode-command
:从当前活动的次要或主要模式运行命令。支持通过按键l/g/m
缩小到局部次要/全局次要/主要模式。 consult-org-heading
:Org 缓冲区的consult-imenu
或consult-outline
的变体。标题与其祖先标题之间用斜线分隔。支持按标题级别、优先级和 TODO 关键字缩小范围,以及实时预览和递归编辑。consult-org-agenda
:跳转到组织议程标题。支持按标题级别、优先级和 TODO 关键字缩小范围,以及实时预览和递归编辑。 consult-man
:通过 Unix apropos
或man -k
查找 Unix 手册页。 consult-man
使用 Emacs man
命令打开选定的手册页。consult-info
:通过信息页面进行全文搜索。如果从*info*
缓冲区内调用该命令,它将搜索当前手册。您可能想要创建自己的命令来搜索一组预定义的信息页面,例如: ( defun consult-info-emacs ()
" Search through Emacs info pages. "
( interactive )
(consult-info " emacs " " efaq " " elisp " " cl " " compat " ))
( defun consult-info-org ()
" Search through the Org info page. "
( interactive )
(consult-info " org " ))
( defun consult-info-completion ()
" Search through completion info pages. "
( interactive )
(consult-info " vertico " " consult " " marginalia " " orderless " " embark "
" corfu " " cape " " tempel " ))
consult-theme
:选择一个主题并禁用所有当前启用的主题。支持滚动候选主题时实时预览主题。consult-preview-at-point
和consult-preview-at-point-mode
:命令和次要模式,用于预览*Completions*
缓冲区中的候选点。如果您使用 Mct 或默认的*Completions*
UI,则此模式相关。consult-completion-in-region
:如果您不使用 Corfu 作为缓冲区内完成 UI,则可以将此函数设置为completion-in-region-function
。然后您的迷你缓冲区完成 UI(例如,Vertico 或 Icomplete)将用于completion-at-point
。 ; ; Use `consult-completion-in-region' if Vertico is enabled.
; ; Otherwise use the default `completion--in-region' function.
( setq completion-in-region-function
( lambda ( &rest args )
( apply ( if vertico-mode
# 'consult-completion-in-region
# 'completion--in-region )
args)))
您可能更喜欢直接在缓冲区中以小弹出窗口的形式查看完成信息,而不是consult-completion-in-region
。在这种情况下,我推荐科孚岛套餐。 consult-completion-in-region
与 Lsp 模式结合存在技术限制。 Lsp服务器依赖于点的输入,以生成精炼的候选字符串。由于完成是从原始缓冲区传输到迷你缓冲区,因此服务器不会收到更新的输入。相反,缓冲区内 Lsp 完成(例如通过 Corfu)可以正常工作,因为完成直接发生在原始缓冲区中。
Consult 通过候选者的实时预览、候选者组的附加缩小功能以及异步生成的候选者列表来增强completing-read
。大多数咨询命令使用的内部consult--read
函数是completing-read
的薄包装,并提供特殊功能。为了支持多个候选源,存在高级函数consult--multi
。 Consult 的架构允许它在后端与不同的完成系统一起工作,同时仍然提供高级功能。
一些咨询命令支持实时预览。例如,当您滚动浏览consult-line
的项目时,缓冲区将滚动到相应的位置。当搜索正在进行时,可以在迷你缓冲区和缓冲区之间来回跳转以执行递归编辑。
Consult 默认启用预览。您可以通过调整consult-preview-key
变量来禁用它们。此外,可以指定手动触发预览的键绑定,如示例配置中所示。 consult-preview-key
的默认设置是any
,这意味着当选定的候选项更改时,Consult 会在按下任意键时立即触发预览。您可以使用自己的:preview-key
单独配置每个命令。可以进行以下设置:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
一个安全的建议是,一般情况下启用自动立即预览,并仅对由于文件加载而导致预览成本较高的命令禁用自动预览。在内部,Consult 使用this-command
的值来确定自定义的:preview-key
。这意味着,如果您在自己的函数或命令中包装了consult-*
命令,您还需要将自定义命令的名称添加到consult-customize
调用中,以便考虑它。
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
; ; my/command-wrapping-consult ;; disable auto previews inside my command
:preview-key '( :debounce 0.4 any) ; ; Option 1: Delay preview
; ; :preview-key "M-.") ;; Option 2: Manual preview
在这种情况下,人们可能想知道对当前候选者使用 Embark 操作与手动触发预览之间有什么区别。主要区别在于手动预览打开的文件在完成会话后会再次关闭。在预览期间,某些功能被禁用以提高性能,例如,请参阅自定义变量consult-preview-variables
和consult-preview-allowed-hooks
。仅执行在consult-preview-allowed-hooks
中列出的挂钩。此变量适用于find-file-hook
、 change-major-mode-hook
和模式挂钩,例如prog-mode-hook
。为了在预览期间启用额外的字体锁定,请将相应的挂钩添加到允许列表中。以下代码针对 org-modern 和 hl-todo 演示了这一点。
; ; local modes added to prog-mode hooks
( add-to-list 'consult-preview-allowed-hooks 'hl-todo-mode )
( add-to-list 'consult-preview-allowed-hooks 'elide-head-mode )
; ; enabled global modes
( add-to-list 'consult-preview-allowed-hooks 'global-org-modern-mode )
( add-to-list 'consult-preview-allowed-hooks 'global-hl-todo-mode )
大于consult-preview-partial-size
的文件将被部分预览。延迟预览对于consult-theme
也很有用,因为主题预览速度很慢。延迟会带来更流畅的 UI 体验。
; ; Preview on any key press, but delay 0.5s
(consult-customize consult-theme :preview-key '( :debounce 0.5 any))
; ; Preview immediately on M-., on up/down after 0.5s, on any other key after 1s
(consult-customize consult-theme
:preview-key
'( " M-. "
:debounce 0.5 " " " "
:debounce 1 any))
Consult 对候选人群体有特殊支持。如果完成 UI 支持分组功能,则 UI 用细线分隔组并显示组标题。如果候选列表由多种类型的候选或来自多个源的候选组成,则分组非常有用,例如consult-buffer
命令,它显示缓冲区和最近打开的文件。请注意,您可以通过使用consult-customize
宏将相应命令的:group
属性设置为 nil 来禁用组标题。
通过输入缩小前缀或按缩小键,可以将完成候选限制到某个候选组。使用consult-buffer
命令时,可以输入前缀b SPC
将候选列表限制为仅缓冲区。如果您随后按DEL
,将再次显示完整的候选列表。此外,可以配置缩小前缀键和加宽键,按下它们可以达到相同的效果,请参阅配置变量consult-narrow-key
和consult-widen-key
。
按consult-narrow-key
后,可以通过按Ch
显示可能的缩小键。当在某个前缀键后按Ch
时,将调用prefix-help-command
,默认情况下显示键绑定帮助窗口。作为更紧凑的替代方案,有可以绑定到键的consult-narrow-help
命令,例如?
或consult-narrow-map
中的Ch
,如示例配置中所示。如果安装了which-key,则在按下consult-narrow-key
后,缩小键会自动显示在which-key窗口中。
Consult 支持异步生成候选列表。此功能用于像consult-grep
这样的搜索命令,其中匹配列表是在用户键入正则表达式时动态生成的。 grep 进程在后台执行。当修改正则表达式时,后台进程将终止,并使用修改后的正则表达式启动新进程。
然后可以使用已安装的 Emacs 补全方式缩小找到的匹配范围。如果您使用例如orderless
完成样式,这可能会非常强大。
通过分割输入字符串可以实现这种两级过滤。输入字符串的一部分被视为 grep 的输入,而输入的一部分则用于过滤。有多种分割样式可用,可在consult-async-split-styles-alist
中配置: nil
、 comma
、 semicolon
和perl
。默认的分割样式是使用变量consult-async-split-style
配置的。
使用comma
和semicolon
分割样式,逗号或分号之前的第一个单词将传递给 grep,剩余的字符串用于过滤。 nil
分割样式不执行任何分割,整个输入将传递给 grep。
perl
拆分样式使用与 Perl 正则表达式类似的语法在标点符号处拆分输入字符串。
示例:
#defun
:使用 grep 搜索“defun”。#consult embark
:使用 grep 以任意顺序搜索“consult”和“embark”。#first.*second
:使用 grep 搜索“first”,然后搜索“second”。#(consult|embark)
:使用 grep 搜索“consult”或“embark”。请注意 Emacs 风格的正则表达式的用法。#defun#consult
:使用 grep 搜索“defun”,使用单词“consult”进行过滤。/defun/consult
:也可以使用其他标点符号。#to#
:使用 grep 强制搜索“to”,因为默认情况下 grep 模式必须比consult-async-min-input
字符长。#defun -- --invert-match#
:将参数--invert-match
传递给 grep。像find
和grep
这样的异步进程会创建一个错误日志缓冲区_*consult-async*
(注意前导空格),这对于故障排除很有用。提示符有一个小指示器显示进程状态:
:
在提供输入之前通常的提示冒号。*
带有警告面孔,进程正在运行。:
成功面,成功,进程退出,错误代码为零。!
出现错误,失败,进程以非零错误代码退出。;
带有错误面,中断,例如,如果提供更多输入。 可以组合多个同步候选源。 consult-buffer
命令使用此功能在单个菜单中呈现类似缓冲区的候选项,以便快速访问。默认情况下, consult-buffer
包括缓冲区、书签、最近的文件以及特定于项目的缓冲区和文件。可以通过consult-buffer-sources
变量配置源列表。可以定义任意自定义源。
例如,书签源定义如下:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
必填源字段:
:category
完成类别。:items
可供选择的字符串列表或返回字符串列表的函数。不支持 cons 单元列表。可选源字段:
:name
源名称,用于缩小范围、分组标题和注释。:narrow
缩小字符或(character . string)
对。:preview-key
预览键或触发预览的键。:enabled
如果源已启用,则必须返回 t 的函数。:hidden
当此源的 t 个候选者默认隐藏时。:face
用于突出显示候选人的脸部。:annotate
为每个候选调用注释函数,返回字符串。:history
用于添加选定候选者的历史变量名称。:default
如果源的第一项是默认值,则必须为 t。:action
使用所选候选者调用的函数。:new
仅当:require-match
为 nil 时,才使用新的候选名称调用函数。:state
源的状态构造函数,必须返回状态函数。源的:state
和:action
字段值得更长的解释。 :action
函数采用单个参数,并且仅在选择所选候选者后(如果选择尚未中止)才调用。提供此功能是为了方便和轻松地定义源。 :state
字段更为通用。 :state
函数是一个不带参数的构造函数,它可以执行一些预览所需的设置。它必须返回一个带有 ACTION 和 CANDIDATE 参数的闭包。有关 ACTION 参数的更多详细信息,请参阅consult--with-preview
的文档字符串。
默认情况下, consult-buffer
预览缓冲区、书签和文件。加载最近的文件或书签可能会导致昂贵的操作。但是,可以按如下方式配置手动预览。
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
为了方便起见,可以将源直接添加到consult-buffer-source
列表中。例如,以下源列出了所有 Org 缓冲区并允许您创建新缓冲区。
( defvar org-source
( list :name " Org Buffer "
:category 'buffer
:narrow ?o
:face 'consult-buffer
:history 'buffer-name-history
:state # 'consult--buffer-state
:new
( lambda ( name )
( with-current-buffer ( get-buffer-create name)
( insert " #+title: " name " nn " )
( org-mode )
(consult--buffer-action ( current-buffer ))))
:items
( lambda ()
(consult--buffer-query :mode 'org-mode :as # 'consult--buffer-pair ))))
( add-to-list 'consult-buffer-sources 'org-source 'append )
人们可以为其他主要模式创建类似的源。有关许多其他源示例,请参阅咨询 wiki。另请参阅consult-buffer
和内部consult--multi
API 的文档。函数consult--multi
可用于创建新的多源命令。
注意:安装来自 MELPA 的embark-consult
包,该包提供特定于 Consult 的 Embark 操作和 Occur 缓冲区导出。
Embark 是一个多功能包,它提供与上下文相关的操作,类似于上下文菜单。有关其功能的详细描述,请参阅 Embark 手册。
操作是可以对当前选定的候选者(或 Embark 术语中的目标)进行操作的命令。例如,当完成文件时,会提供delete-file
命令。使用 Embark,您可以通过Mx
对当前选定的候选者执行任意命令。
此外,Embark 还提供了embark-collect
命令,该命令收集候选项并将其呈现在 Embark 收集缓冲区中,以便可以对它们应用进一步的操作。一个相关的功能是embark-export
命令,它将候选列表导出到特殊类型的缓冲区。例如,在文件完成的情况下,将打开 Dired 缓冲区。
在 Consult 的上下文中,特别令人兴奋的是可以从consult-line
、 consult-outline
、 consult-mark
和consult-global-mark
导出匹配行。匹配的行将导出到发生缓冲区,可以在其中通过occur-edit-mode
(按e
键)进行编辑。同样,Embark 支持将consult-grep
、 consult-ripgrep
和consult-git-grep
找到的匹配导出到 Grep 缓冲区,如果安装了 wgrep 软件包,则可以在其中编辑跨文件的匹配。这三个工作流程是对称的。
consult-line
-> embark-export
到occur-mode
缓冲区 -> occur-edit-mode
用于编辑缓冲区中的匹配项。consult-grep
-> embark-export
to grep-mode
buffer -> wgrep
用于编辑所有匹配项。consult-find
-> embark-export
to dired-mode
buffer -> wdired-change-to-wdired-mode
进行编辑。Consult 可以通过 Emacs 内置包管理器从 ELPA 或 MELPA 安装。或者,它可以通过其他非标准包管理器直接从开发存储库安装。
有一个咨询 wiki,可以在其中提供其他配置示例。
重要提示:建议您在配置中启用词法绑定。许多与 Consult 相关的代码片段需要词法绑定,因为它们使用 lambda 和闭包。
Consult 包仅提供命令,不添加任何键绑定或模式。因此,该包是非侵入式的,但需要一些设置工作。为了使用咨询命令,建议为经常访问的命令添加键绑定。很少使用的命令可以通过Mx
调用。请随意仅绑定您认为对工作流程有用的命令。此处显示的配置依赖于use-package
宏,它是管理包配置的便捷工具。
注意:有一个 Consult wiki,您可以在其中贡献其他配置示例。
; ; Example configuration for Consult
( use-package consult
; ; Replace bindings. Lazily loaded by `use-package' .
:bind ( ; ; C-c bindings in `mode-specific-map'
( " C-c M-x " . consult-mode-command)
( " C-c h " . consult-history)
( " C-c k " . consult-kmacro)
( " C-c m " . consult-man)
( " C-c i " . consult-info)
([remap Info-search] . consult-info)
; ; C-x bindings in `ctl-x-map'
( " C-x M-: " . consult-complex-command) ; ; orig. repeat-complex-command
( " C-x b " . consult-buffer) ; ; orig. switch-to-buffer
( " C-x 4 b " . consult-buffer-other-window) ; ; orig. switch-to-buffer-other-window
( " C-x 5 b " . consult-buffer-other-frame) ; ; orig. switch-to-buffer-other-frame
( " C-x t b " . consult-buffer-other-tab) ; ; orig. switch-to-buffer-other-tab
( " C-x r b " . consult-bookmark) ; ; orig. bookmark-jump
( " C-x p b " . consult-project-buffer) ; ; orig. project-switch-to-buffer
; ; Custom M-# bindings for fast register access
( " M-# " . consult-register-load)
( " M-' " . consult-register-store) ; ; orig. abbrev-prefix-mark (unrelated)
( " C-M-# " . consult-register)
; ; Other custom bindings
( " M-y " . consult-yank-pop) ; ; orig. yank-pop
; ; M-g bindings in `goto-map'
( " M-g e " . consult-compile-error)
( " M-g f " . consult-flymake) ; ; Alternative: consult-flycheck
( " M-g g " . consult-goto-line) ; ; orig. goto-line
( " M-g M-g " . consult-goto-line) ; ; orig. goto-line
( " M-g o " . consult-outline) ; ; Alternative: consult-org-heading
( " M-g m " . consult-mark)
( " M-g k " . consult-global-mark)
( " M-g i " . consult-imenu)
( " M-g I " . consult-imenu-multi)
; ; M-s bindings in `search-map'
( " M-s d " . consult-find) ; ; Alternative: consult-fd
( " M-s c " . consult-locate)
( " M-s g " . consult-grep)
( " M-s G " . consult-git-grep)
( " M-s r " . consult-ripgrep)
( " M-s l " . consult-line)
( " M-s L " . consult-line-multi)
( " M-s k " . consult-keep-lines)
( " M-s u " . consult-focus-lines)
; ; Isearch integration
( " M-s e " . consult-isearch-history)
:map isearch-mode-map
( " M-e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s l " . consult-line) ; ; needed by consult-line to detect isearch
( " M-s L " . consult-line-multi) ; ; needed by consult-line to detect isearch
; ; Minibuffer history
:map minibuffer-local-map
( " M-s " . consult-history) ; ; orig. next-matching-history-element
( " M-r " . consult-history)) ; ; orig. previous-matching-history-element
; ; Enable automatic preview at point in the *Completions* buffer. This is
; ; relevant when you use the default completion UI.
:hook ( completion-list-mode . consult-preview-at-point-mode)
; ; The :init configuration is always executed (Not lazy)
:init
; ; Optionally configure the register formatting. This improves the register
; ; preview for `consult-register' , `consult-register-load' ,
; ; `consult-register-store' and the Emacs built-ins.
( setq register-preview-delay 0.5
register-preview-function # 'consult-register-format )
; ; Optionally tweak the register preview window.
; ; This adds thin lines, sorting and hides the mode line of the window.
( advice-add # 'register-preview :override # 'consult-register-window )