helm 的拼音首字母搜索方案?

请问如何在 helm 中实现类似 emacs中搜索中文单词和含中文文件名的文件 - 知乎 的功能:

  • 在当前 buffer 中以拼音首字母进行 incremental 搜索
  • 跟 helm-for-files, helm-buffers 等结合对文件和 buffer list 进行拼音首字母搜索
  • 跟 helm-rg 结合对目录下所有文件进行拼音首字母搜索
  • 通过 ! 之类的字符,在已经搜到的结果里进行逆向匹配删掉不想要的

我用 ivy,可以通过下面的代码实现pinyin搜索, helm的话,你就应该找到处理 regexp 的函数, 然后做类似的替换。

(defun eh-ivy-cregexp (str)
  (let ((x (ivy--regex-plus str))
        (case-fold-search nil))
    (if (listp x)
        (mapcar (lambda (y)
                  (if (cdr y)
                      y
                    (list (pyim-cregexp-build (car y)))))
                x)
      (pyim-cregexp-build x))))

(setq ivy-re-builders-alist
      '((t . eh-ivy-cregexp)))

一直在用你的这段配置,话说如果想改成小鹤双拼方便么

你如果把 pyim 设置为小鹤,那就使用小鹤

(setq pyim-default-scheme 'xiaohe-shuangpin)
1 个赞