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


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-plusivy--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-oM2019년 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.