结合ivy和bm来在固定位置跳转

buffer多了,总是需要在不同的位置进行快速跳转。之前一直使用的bm来在固定位置打上bookmark。

现在我结合了ivy,可以交互式的跳转位置,而且支持预览的功能。我感觉还不错,分享给大家。

结合ivy来使用bm-bookmarks

2 个赞

counsel-bookmark 之後用ivy-toggle-calling一般人我不告訴他 :rofl:

counsel里用C-M-n

对的,ivy-toggle-calling是可以的。不过bm和bookmark还不太一样。一般我都用它来暂存一些位置的。

ivy-calling是全局的,只对一个函数默认设置开启ivy-calling的话,可能需要加advice?

default of “calling” when run counsel-git-grep

这个是可以的。我在这里找到一个类似的:

default-of-calling-when-run-counsel-git-grep

ivy-calling是全局的?如果默认只在这个函数打开calling这个功能的话,好像还需要再多做些操作?

Hydra (C-o)里有 toggle 操作,可以参考下

hydra-ivy里面是直接这样设置的:

(defun ivy-toggle-calling ()
  "Flip `ivy-calling'."
  (interactive)
  (when (setq ivy-calling (not ivy-calling))
    (ivy-call)))

这样为什么不会改变全局的ivy-calling的值这个我没弄懂。

ivy-calling是 buffer local的,试试 (setq-default ivy-calling t)

不行,这样是全局的。

对啊,想要只改变 local 的就用(setq ivy-calling t)

实际情况是,下面这两种作法都没有用:


(defun f ()
  (interactive)
  (setq ivy-calling t)
  (ivy-switch-buffer))

(defun f ()
  (interactive)
  (let ((ivy-calling t))
    (ivy-switch-buffer)))

然后全局设置使用setq设置也没有用:

(setq ivy-calling t)

It’s amazing :frowning: