增强counsel-grep-or-swiper并绑定到C-s,超爽!可自动搜索光标下的单词或选中的

C-s 默认绑定到 isearch-forward: 不好用, swiper-isearch or swiper-isearch-thing-at-point 感觉没counsel-grep-or-swiper好用。

下面增强counsel-grep-or-swiper并绑定到C-s,超爽!可自动搜索光标下的单词或选中的

(defun dj@counsel-grep-or-swiper-at-point () 
  "C-s 默认绑定到 isearch-forward: 不好用。通过增强counsel-grep-or-swiper,可以自动搜索光标下的单词、或选中的。"
  (interactive)
  (if (window-minibuffer-p)
      (let (bnd str regionp)
        (with-ivy-window
          (setq bnd
                (if (setq regionp (region-active-p))
                    (prog1 (cons (region-beginning) (region-end))
                      (deactivate-mark))
                  (bounds-of-thing-at-point 'symbol)))
          (setq str (buffer-substring-no-properties (car bnd) (cdr bnd))))
        (insert str)
        (unless regionp
          (ivy--insert-symbol-boundaries)))
    (let (thing)
      (if (use-region-p)
          (progn
            (setq thing (buffer-substring-no-properties
                         (region-beginning) (region-end)))
            (goto-char (region-beginning))
            (deactivate-mark))
        (let ((bnd (bounds-of-thing-at-point 'symbol)))
          (when bnd
            (goto-char (car bnd)))
          (setq thing (ivy-thing-at-point))))
      (counsel-grep-or-swiper thing))))
(global-set-key (kbd "C-s") 'dj@counsel-grep-or-swiper-at-point)

1 个赞

你可以试试这个

这个不是一回事吧

已经有这个功能了吧, 在swiper输入时M-n就行了.

你这样子时自动获取当前单词, 假如想搜索其他的就得删除刚才自动获取的这个单词.

各有优点吧

现在个人用 swiper-isearch (C-s),主要是速度问题,也保留了counsel-grep-or-swiper(s-f)。 然后增加了一个 ivy fly 功能。默认搜索光标下的符号,颜色是灰色;输入时会自动全部清除,颜色变为默认值。配置参考 Centaur Emacs。

emacs

6 个赞

貌似Centaur Emacs的解决办法不错呦,看来值得玩玩它了。