有什么办法知道一个交互的函数运行后是处于什么 keymap ?或者让然他处于某个 keymap?

可能标题有点不清楚,说一说想做什么吧…

我用着 ivy.

在一个不属于 git 的文件夹中运行 M-x magit-status 的时候,会调用 (magit-read-repository),然后 magit-read-repository 里面,会运行 read-directory-name "Git repository:" xxxx

这个时候就会跳出交互的 directory 选择框…

那么问题来了,我该如何设置 <left>/<right> 跳到上/下一层文件夹,同时不影响 ivy 相关的其他东西的正常运作?

这个时候,虽然在 ivy-minibuffer-map 里面设置 <right>ivy-alt-done<left>ivy-backward-delete-char 是有效的,但是这样设置之后,又会导致有些时候,需要用 <right>/<left> 在其他的 ivy 相关的里面,做其他事情的时候,只能用 C-f/C-n 来替代方向键。

(ps: 虽然不用方向键也行,但能用的时候,还是不想放弃😁️

应该可以专门写个 Ivy 命令,使用单独的 Keymap。

1 个赞

看看这种对你有没有帮助

这种是在dired-do-compress-to 内将对read-file-name的调用替换为ivy-dired-history–read-file-name, 你的需求感觉应该是把keymap替换成一个临时的 ,可以用let就可以做到吧, 但不知你为什么你要把事情搞那么复杂。

1 个赞

啊,原来如此!感谢w 我去试试看w

嗯,感谢w 结合 advice 感觉应该没问题

啊,对了,我发现我的这个问题原来有个 issue 了