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 )