スワイパーを除くすべての場所でアイビーファジーマッチングを有効にする


10

flx-ido-modeしばらく使ってて気に入っています。Ivyはを使用して同じように動作できますivy--regex-fuzzy

問題は、swiper今でもファジーマッチングを使用することであり、この場合、私はそれが本当に好きではありません(少なくとも、常にデフォルトではありません)。

したがって、以外のIvyでファジーマッチングを引き続き使用したいと思いswiperます。これを構成する方法はありますか?それとも、swiper何かのプレフィックスを付けることで、現在「this」サブストリングを本当に探しているとどういうわけかわかりますか?

回答:


16

以外のIvyでファジーマッチングを引き続き使用したいと思いswiperます。

Ivyがこれらの関数を参照するように、どの「正規表現ビルダー」を決定する変数は、どのコレクション関数に使用されますか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を使用すると、Hydraインターフェースを介してその場で正規表現ビルダーを回転できます。これを(ivy) ivy--regex-fuzzy暗示するかなり隠された最後の文と、より完全な説明はに(ivy) Hydra in the minibufferありますが、前回のリリースから少し時間が経過しているため、マニュアルは少し古くなっているようです。

つまり、2017-07-04以降、IvyではC-omivy-rotate-preferred-builders)を介して、完了時に正規表現ビルダーを循環させることができます。編集コメントで指摘されAsme Justいるように、デフォルトのキーバインディングが2019-02-06に変更さC-oMました


完了サイクリングについて少し詳しく説明していただけますか?たとえば、スワイパー検索を開始した場合、Coはすぐに「コマンド実行:ロードファイルを開けません:そのようなファイルまたはディレクトリはありません。ivy-hydra」というメッセージを表示します。
B_old '10

@B_old ivy-hydra最初にオプションパッケージをインストールしてください。オプションの(つまり、常にインストールされるとは限らない)機能にデフォルトのキーバインドが存在するべきかどうかという道徳的な問題はすでに提起されており、現状はすぐに変わる可能性は低いようです。ivy-hydraマニュアルが扱っていない他の質問がある場合は、それらのために新しいEmacs SE質問を作成することを検討してください。
バジル

ivy-rotate-preferred-builders)はC-o M 現在デフォルトで私用です。
Asme Just

下位互換性のない変更は、わずか2週間前に行われた@AsmeJustおかげで、:github.com/abo-abo/swiper/commit/...を
バジル

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.