emacs - 如何让 emacs 不旋转整个选项列表?

标签 emacs ido

在 emacs ido 选项中,当前选择的选项总是显示在列表的第一位。当我们改变时通过箭头键,或 C-s/C-r :整个列表被旋转而不是当前选择的选项移动到任何地方。这让我非常不安。为了说明,假设 A、B、C 和 D 是缓冲区,我们正在运行 ido-switch-buffer

  1. 当前行为

    *A* B C D

按 C-s

*B* C D A

再次按 C-s

*C* D A B

  1. 我想要的是

*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 模式,我可以按以下方式覆盖下一个、上一个键绑定(bind):

(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 让我覆盖键吗?

最佳答案

好的,找到答案了。 ido-grid-mode 包确实是我需要的,谢谢@jpkotta。有一个技巧可以让我的键绑定(bind)工作。

(defun ido-my-keys ()
"Add my keybindings for Ido."
(define-key ido-completion-map (kbd "M-)") 'ido-next-match)
(define-key ido-completion-map (kbd "M-)") 'ido-prev-match)
)
(ido-grid-mode t)
(add-hook 'ido-setup-hook 'ido-my-keys)

也就是说 - ido-grid-mode 必须在 为键绑定(bind)添加设置 Hook 之前启动。我是在设置 Hook 之后或完全在设置 Hook 之外做的,但它不起作用。

EDIT :忘了说了,还有一个技巧。破解 ido-grid-mode 本身。在 ido-grid-mode.el 中进行以下更改:

  ;; ('C-s     (define-key ido-completion-map (kbd "C-s")       #'ido-grid-mode-next))                                                                                                                         
  ;; ('C-r     (define-key ido-completion-map (kbd "C-r")       #'ido-grid-mode-previous))                                                                                                                     
  ('C-s     (define-key ido-completion-map (kbd "M-)")       #'ido-grid-mode-next))                                                                                                                            
  ('C-r     (define-key ido-completion-map (kbd "M-(")       #'ido-grid-mode-previous))                                                                                                                        

关于emacs - 如何让 emacs 不旋转整个选项列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51153863/

相关文章:

emacs - 选择每行的前 x 个字母

mysql - 使用Icinga2 Web2的IDO DB中没有历史数据

dired - 如何在 IDO 模式下选择目录(不是文件),emacs-24

emacs - 使用 ido 插入文件名

在 org-mode 中运行 Octave 代码块时 Emacs 卡住

emacs - ESS/R 的有用键盘快捷键和提示

sql - 在 emacs 中使用 sqlplus 时如何与数据库断开连接?

Emacs 持久折叠模式

Emacs id : How to show particular file endings first?

Emacs:在 minibuffer 中更改 Ido 完成键映射