Consult는 Emacs 완료 기능인 읽기 완료를 기반으로 검색 및 탐색 명령을 제공합니다. 완료를 사용하면 후보 목록에서 항목을 빠르게 선택할 수 있습니다. 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
입력하면 간략한 설명과 함께 모든 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
: kill-ring
에서 항목을 선택하기 위한 yank
의 향상된 버전입니다. 선택한 텍스트가 버퍼에 오버레이로 미리 표시됩니다.consult-yank-pop
: DWIM 동작을 갖춘 yank-pop
의 향상된 버전으로, kill-ring
순환하여 마지막 yank
를 대체하거나, 마지막 yank
없는 경우 kill-ring
을 참조합니다. 선택한 텍스트가 버퍼에 오버레이로 미리 표시됩니다.consult-yank-replace
: consult-yank-pop
과 비슷하지만 항상 yank
으로 잡아당긴 것을 kill-ring
의 항목으로 대체합니다.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
: 현재 버퍼의 메뉴 항목으로 이동합니다. 실시간 미리보기, 재귀 편집 및 축소를 지원합니다.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
completing-read
와 동일한 완료 필터링을 사용하여 내보낸 Embark 수집 버퍼의 범위를 더 좁힐 수 있습니다. 입력이 부정 연산자로 시작하는 경우, 즉 ! 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 필터링으로 전달됩니다. 이는 Orderless와 같은 고급 완성 스타일을 사용하는 경우 특히 유용합니다. consult-grep
미리보기를 지원합니다. consult-grep
프로젝트가 발견되면 현재 프로젝트 디렉터리를 검색합니다. 그렇지 않으면 default-directory
검색됩니다. consult-grep
접두사 인수 Cu Ms g
와 함께 호출되는 경우 하나 이상의 쉼표로 구분된 파일 및 디렉터리를 수동으로 지정할 수 있습니다. 두 개의 접두사 인수 Cu Cu Ms g
사용하여 호출하는 경우 아직 프로젝트 내부에 있지 않은 경우 먼저 프로젝트를 선택할 수 있습니다.consult-find
, consult-fd
, consult-locate
: 정규 표현식과 경로를 일치시켜 파일을 찾습니다. consult-grep
과 마찬가지로 프로젝트 루트 또는 현재 디렉터리가 검색의 루트 디렉터리입니다. 입력 문자열은 consult-grep
과 유사하게 처리됩니다. 여기서 첫 번째 부분은 find에 전달되고 두 번째 부분은 Emacs 필터링에 사용됩니다. Consult grep 명령의 경우와 마찬가지로 consult-find
작업에 대한 접두사 인수가 작동합니다. consult-compile-error
: 컴파일 오류로 이동합니다. 실시간 미리보기 축소 및 재귀 편집을 지원합니다.consult-flymake
: Flymake 진단으로 이동합니다. 실시간 미리보기 및 재귀 편집을 지원합니다. 이 명령은 축소를 지원합니다. e SPC
, w SPC
, n SPC
누르면 각각 오류, 경고 및 참고 사항만 표시됩니다.consult-xref
: 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
키를 통해 local-minor/global-minor/major 모드로 범위를 좁힐 수 있습니다. 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
: 버퍼 내 완료 UI로 Corfu를 사용하지 않는 경우 이 기능을 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
대신 버퍼에서 완료를 작은 팝업으로 직접 확인하는 것이 더 나을 수도 있습니다. 그렇다면 Corfu 패키지를 추천합니다. Lsp 모드와 결합하여 consult-completion-in-region
에는 기술적 제한이 있습니다. Lsp 서버는 정제된 후보 문자열을 생성하기 위해 해당 지점의 입력에 의존합니다. 완료가 원래 버퍼에서 미니버퍼로 전송되므로 서버는 업데이트된 입력을 받지 않습니다. 대조적으로, 예를 들어 Corfu를 통한 버퍼 내 Lsp 완료는 원래 버퍼에서 직접 완료가 발생하므로 올바르게 작동합니다.
Consult는 후보자의 실시간 미리 보기, 후보자 그룹에 대한 추가 범위 좁히기 기능 및 비동기적으로 생성된 후보자 목록을 통해 completing-read
향상시킵니다. 대부분의 Consult 명령에서 사용되는 내부 consult--read
기능은 completing-read
에 대한 얇은 래퍼이며 특수 기능을 제공합니다. 여러 후보 소스를 지원하기 위해 상위 수준 기능인 consult--multi
있습니다. Consult의 아키텍처를 통해 백엔드에서 다양한 완성 시스템과 함께 작동하는 동시에 고급 기능을 제공할 수 있습니다.
일부 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
완성 스타일을 사용하는 경우 이는 강력할 수 있습니다.
이 2단계 필터링은 입력 문자열을 분할하여 가능합니다. 입력 문자열의 일부는 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 패턴은 기본적으로 consult-async-min-input
문자보다 길어야 하므로 grep을 사용하여 "to"를 강제로 검색합니다.#defun -- --invert-match#
: 인수 --invert-match
grep에 전달합니다. find
및 grep
과 같은 비동기 프로세스는 문제 해결에 유용한 오류 로그 버퍼 _*consult-async*
(앞 공백 참고)를 생성합니다. 프롬프트에는 프로세스 상태를 보여주는 작은 표시기가 있습니다.
:
입력이 제공되기 전의 일반적인 프롬프트 콜론입니다.*
경고 얼굴이 있으면 프로세스가 실행 중입니다.:
성공 얼굴, 성공, 프로세스가 오류 코드 0으로 종료되었습니다.!
오류 발생, 실패, 0이 아닌 오류 코드로 프로세스가 종료되었습니다.;
예를 들어 더 많은 입력이 제공되는 경우 오류가 발생하여 중단됩니다. 여러 동기식 후보 소스를 결합할 수 있습니다. 이 기능은 빠른 액세스를 위해 단일 메뉴에 버퍼와 유사한 후보를 표시하기 위해 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
선택할 문자열 목록 또는 문자열 목록을 반환하는 함수입니다. 단점 셀 목록은 지원되지 않습니다.선택적 소스 필드:
:name
범위 좁히기, 그룹 제목 및 주석에 사용되는 소스 이름입니다.:narrow
축소 문자 또는 (character . string)
쌍입니다.:preview-key
미리보기 키 또는 미리보기를 실행하는 키입니다.:enabled
소스가 활성화된 경우 t를 반환해야 하는 함수입니다.:hidden
이 소스의 후보가 t일 때 기본적으로 숨겨집니다.:face
후보자를 강조하는 데 사용되는 얼굴입니다.:annotate
각 후보자에 대해 호출되는 Annotation 함수는 문자열을 반환합니다.: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
목록에 직접 추가할 수 있습니다. 예를 들어 다음 소스에서는 모든 조직 버퍼를 나열하고 새 버퍼를 생성할 수 있습니다.
( 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 )
다른 주요 모드에 대해서도 유사한 소스를 만들 수 있습니다. 많은 추가 소스 예제는 Consult 위키를 참조하세요. consult-buffer
및 내부 consult--multi
API 문서도 참조하세요. consult--multi
기능을 사용하여 새로운 다중 소스 명령을 생성할 수 있습니다.
참고 : MELPA에서 Consult 관련 Embark 작업 및 Occur 버퍼 내보내기를 제공하는 embark-consult
패키지를 설치합니다.
Embark는 상황에 맞는 메뉴와 비교할 수 있는 상황에 따른 작업을 제공하는 다용도 패키지입니다. 해당 기능에 대한 자세한 설명은 Embark 매뉴얼을 참조하세요.
액션은 현재 선택된 후보(또는 Embark 용어로 대상)에 대해 작동할 수 있는 명령입니다. 예를 들어 파일을 완료할 때 delete-file
명령이 제공됩니다. Embark를 사용하면 Mx
통해 현재 선택된 후보에 대해 임의의 명령을 실행할 수 있습니다.
또한 Embark는 후보를 수집하고 이를 Embark 수집 버퍼에 표시하는 embark-collect
명령을 제공하여 추가 작업을 적용할 수 있습니다. 관련 기능은 후보 목록을 특수 유형의 버퍼로 내보내는 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
-> occur-mode
버퍼로 embark-export
-> 버퍼에서 일치 항목을 편집하기 위한 occur-edit-mode
.consult-grep
-> grep-mode
버퍼로 embark-export
-> 모든 일치 항목 편집을 위한 wgrep
.consult-find
-> dired-mode
버퍼로 embark-export
-> 편집을 위해 wdired-change-to-wdired-mode
.Consult는 Emacs 내장 패키지 관리자를 통해 ELPA 또는 MELPA에서 설치할 수 있습니다. 또는 다른 비표준 패키지 관리자를 통해 개발 저장소에서 직접 설치할 수도 있습니다.
추가 구성 예제를 제공할 수 있는 Consult 위키가 있습니다.
중요: 구성에서 어휘 바인딩을 활성화하는 것이 좋습니다. 많은 Consult 관련 코드 조각에는 람다 및 클로저를 사용하므로 어휘 바인딩이 필요합니다.
Consult 패키지는 명령만 제공하며 키 바인딩이나 모드를 추가하지 않습니다. 따라서 패키지는 방해가 되지 않지만 약간의 설정 노력이 필요합니다. Consult 명령을 사용하려면 자주 액세스하는 명령에 대한 키 바인딩을 추가하는 것이 좋습니다. 거의 사용되지 않는 명령은 Mx
통해 호출할 수 있습니다. 작업 흐름에 유용하다고 생각되는 명령만 자유롭게 바인딩하세요. 여기에 표시된 구성은 패키지 구성을 관리하는 편리한 도구인 use-package
매크로를 사용합니다.
참고: 추가 구성 예제를 제공할 수 있는 Consult 위키가 있습니다.
; ; 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 )