스위퍼를 제외하고 어디서나 담쟁이 퍼지 매칭


10

나는 오랫동안 사용 flx-ido-mode하고 있었고 그것을 좋아한다. 을 사용하여 아이비도 같은 방식으로 작동 할 수 있습니다 ivy--regex-fuzzy.

문제는 swiper이제 퍼지 일치를 사용 한다는 것입니다.이 경우에는 적어도 기본적으로는 그렇지 않습니다.

따라서를 제외하고 Ivy와 퍼지 매칭을 계속 사용하고 싶습니다 swiper. 이것을 구성하는 방법이 있습니까? 아니면 어떻게 든 swiper접두사로 "this"하위 문자열을 찾고 있다고 말할 수 있습니까?

답변:


16

에서 제외하고 아이비와 퍼지 매칭을 계속 사용하고 싶습니다 swiper.

Ivy가 이러한 함수를 참조하는 "regexp 빌더"를 결정하는 변수는 다음과 같은 콜렉션 함수에 사용됩니다 ivy-re-builders-alist.

ivy-re-builders-alist is a variable defined in ‘ivy.el’.
Its value is ((t . ivy--regex-plus))

Documentation:
An alist of regex building functions for each collection function.

Each key is (in order of priority):
1. The actual collection function, e.g. ‘read-file-name-internal’.
2. The symbol passed by :caller into ‘ivy-read’.
3. ‘this-command’.
4. t.

Each value is a function that should take a string and return a
valid regex or a regex sequence (see below).

Possible choices: ‘ivy--regex’, ‘regexp-quote’,
‘ivy--regex-plus’, ‘ivy--regex-fuzzy’.

If a function returns a list, it should format like this:
’(("matching-regexp" . t) ("non-matching-regexp") ...).

The matches will be filtered in a sequence, you can mix the
regexps that should match and that should not match as you
like.

그래서에서 기본 정규 표현식 빌더를 변경하려면 ivy--regex-plus에 ivy--regex-fuzzy대한 이전을하지만, 계속 swiper, 당신은 할 수

(setq ivy-re-builders-alist
      '((swiper . ivy--regex-plus)
        (t      . ivy--regex-fuzzy)))

좀 더 프로그래밍 방식으로

(with-eval-after-load 'ivy
  (push (cons #'swiper (cdr (assq t ivy-re-builders-alist)))
        ivy-re-builders-alist)
  (push (cons t #'ivy--regex-fuzzy) ivy-re-builders-alist))

자세한 내용은에 자세히 설명되어 (ivy) Completion Styles있습니다.

나는 [퍼지 매칭]을 정말로 좋아하지 않습니다 (적어도 기본값은 아닙니다)

아이비를 사용하면 히드라 인터페이스를 통해 정규식 빌더를 즉시 회전시킬 수 있습니다. 상당히 숨겨진 마지막 문장은 (ivy) ivy--regex-fuzzy이것 에 대해 암시하고 더 자세한 설명은 아래 (ivy) Hydra in the minibuffer에서 찾을 수 있지만 매뉴얼이 마지막 릴리스 이후 약간 오래 되어서 약간 구식 인 것처럼 보입니다 .

아이비는 2017-07-04 부터 C-om( ivy-rotate-preferred-builders) 를 통해 완료하는 동안 정규 표현식 빌더를 순환 할 수 있습니다 . 편집 :에 의해 지적 Asme Just에 주석 바인딩 기본 키가 변경되었습니다 C-oM에 2019년 2월 6일 .


완성 사이클에 대해 좀 더 자세히 설명해 주시겠습니까? 예를 들어 스위퍼 검색을 시작한 경우 Co는 즉시 "명령 실행 :로드 파일을 열 수 없음 : 해당 파일 또는 디렉토리 없음, ivy-hydra"메시지를 즉시 표시합니다.
— B_old 2011

@B_old 옵션 ivy-hydra패키지를 먼저 설치하십시오 . 선택적 (즉, 항상 설치되지는 않음) 기능에 대해 기본 키 바인딩이 존재해야하는지에 대한 도덕적 질문 은 이미 제기 되었으며 현재 상태는 곧 변경되지 않을 것 같습니다. ivy-hydra설명서에서 다루지 않은 다른 질문이 있으면 새로운 Emacs SE 질문 작성을 고려하십시오.
— 바질

( ivy-rotate-preferred-builders)는 C-o M 현재 기본적으로 나를위한 것입니다.
— Asme Just

@AsmeJust 감사합니다, 그것은 2 주일 전에 이루어진 이전 버전과 호환되지 않는 변경 이었습니다
— Basil

2

스위퍼에서 정규 표현식 일치를 끄고 다른 곳에서 활성화하려면 다음에 추가하십시오 user-init-file.

(setq ivy-re-builders-alist
      '((swiper . regexp-quote)
        (t      . ivy--regex-fuzzy)))

한 번만 비활성화하려면 M-r스위퍼를 누르 십시오.


편리한 M-r바인딩 을 언급 한 +1 그러나 OP는 퍼지 매칭을 비활성화하기 만하도록 지정했습니다. 어떤 정규식 작성기를 대체해야하는지 명확하지 않았습니다.
— 바질
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.