【发布时间】:2018-07-04 03:37:15
【问题描述】:
在 emacs ido 选项中,当前选择的选项总是首先显示在列表中。当我们改变例如通过箭头键或 C-s / C-r :旋转整个列表,而不是当前选择的选项移动到任何地方。这对我来说非常令人不安。为了说明,假设 A、B、C 和 D 是缓冲区,我们正在运行 ido-switch-buffer
- 当前行为
*A* B C D
按 C-s
*B* C D A
再次按 C-s
*C* D A B
- 我想要的是
*A* B C D
按 C-s
A *B* C D
再次按 C-s
A B *C* D
我尝试将 "ido-rotate" 和 "ido-rotate-file-list-default" 都设置为 nil 和 t,一一设置,但在这方面没有任何变化。我也没有在 ido 的自定义组中看到任何其他选项。如何使所选选项移动而不是整个列表旋转?
这适用于 emacs 26.1,内置 ido。
编辑: 使用常规的 ido 模式,我可以通过以下方式覆盖下一个以前的键绑定:
(define-key ido-buffer-completion-map (kbd "M-)") 'ido-next-match)
使用 ido-grid-mode,我所有的尝试都失败了。似乎坚持使用硬编码的密钥集来查找下一个选项/上一个选项。 这也不起作用:
(define-key ido-completion-map (kbd "M-)") 'ido-next-match)
任何提示我可以让 ido-grid-mode 让我覆盖键?
【问题讨论】:
-
AFAIK,这对于内置的 ido 选项是不可能的。另外,我认为
ido-rotate是一个内部变量,而不是针对用户的选项。也许有一个包可以满足您的需求;ido-grid-mode似乎有点接近了。当有很多候选人时会发生什么?它必须在某个点开始滚动或旋转。