Глядя на параметры настройки ido-mode
( M-x customize-group
RET ido
RET), я не вижу никаких вариантов включения описанного вами поведения циклирования.
Однако вы можете добавить следующее в ваш init-файл:
(require 'recentf)
(defun ido-recentf-open ()
"Use `ido-completing-read' to find a recent file."
(interactive)
(if (find-file (ido-completing-read "Find recent file: " recentf-list))
(message "Opening file...")
(message "Aborting")))
(global-set-key (kbd "C-x C-r") 'ido-recentf-open)
С этим на месте вы можете нажать, C-x C-rчтобы получить Ido завершение для выбора недавно открытых файлов.
По умолчанию 20 самых последних файлов будут сохранены в истории. Я предлагаю вам увеличить это до 150, установив recentf-max-saved-items
:
(setq recentf-max-saved-items 150)
Бонус: доступ к последним файлам, выпуск стероидов
Я не вижу в нем упоминается во многих местах, но идо Virtual Буферы сделать это очень легко для доступа последних файлов. Включите их так:
(setq ido-use-virtual-buffers t)
Поведение, которое вы получаете, таково:
Если не nil
, обратитесь к прошлым («виртуальным») буферам, а также к существующим.
По сути, это работает следующим образом: скажем, вы посещаете файл, и буфер очищается midnight.el
. Позже вы захотите переключиться на этот буфер, но обнаружите, что он больше не открыт. При включенных виртуальных буферах имя буфера остается в списке буферов (с использованием ido-virtual
грани и всегда в конце), и если вы выберете его, он снова откроет файл обратно. Это позволяет вам меньше думать о том, открыты ли недавно открытые файлы или нет. Большую часть времени вы можете выйти из Emacs, перезапустить, а затем переключиться на буфер файлов, который был ранее открыт, как если бы он все еще был.
C-x C-r
ним невозможно открыть новый файл. Я также удивлен, что невозможно настроить его простым способом. ИсторияC-x C-f
настолько очевидна, что я не могу понять, почему она еще не реализованаido
. Например,M-x up/down
циклически повторяет последние команды,M-% up/down
циклически повторяет последние запросы на замену, даже вне emacs - все оболочки, такие как bash или zsh, используют вверх / вниз для вызова предыдущих команд. Для меняC-x C-f up/down
следует циклически просматривать недавно открытые файлы. Полная остановка.ido-use-virtual-buffers
- отличная функция, которая действительно должна быть включена по умолчанию IMO.Хотя привязки развивались с течением времени, на сегодняшний день, когда вы вызываете
ido-find-file
илиido-find-file-read-only
, вы можете использовать следующие привязки, доступные в конфигурации по умолчанию:ido-prev-work-file
ido-next-work-file
Помимо того, что они не такие эргономически приятные, как M-pи M-nпривязки, к которым я привык, прежде чем пытаться использовать ido , они также медленные, и последующая болтовня минибуфера отвлекает и сбивает с толку. ido делает нечто большее, чем просто показывает недавно открытое имя файла; он сообщает, что «ищет« имя файла »...», возможно, из-за нежелания предложить имя для файла, который больше не существует.
Сообщение «Поиск» приходит из функции
ido-make-merged-file-list
. Читая источник , я не вижу способа отключить магию, которую выполняет эта функция.Вы можете рассмотреть повторно связав
ido-prev-work-file
иido-next-work-file
пару к чему - то более естественным , как C-M-pи C-M-n, или обменивать тока M-p(ido-prev-work-directory
) и M-n(ido-next-work-directory
) привязок для них.Вот код Emacs Lisp для восстановления M-pи M-nциклического просмотра последних файлов, перемещая привязки по умолчанию к каталогам C-M-pи C-M-nсоответственно:
источник
в этом случае я прибегаю к нормальному поведению минибуфера, набирая Cf в idomode. Тогда у вас будут нормальные истории просмотра ключей. Если вы знаете это заранее, это может быть быстро: Cxff :-)
источник
Ответ, данный @itsjeyd, довольно полный. Позвольте мне просто предложить функцию:
Предоставлено WikEmacs
источник
Я обнаружил, что
helm-for-files
работает лучше, чем любой из приведенных выше ответов с целью автозаполнения имени файла и имеет хороший интерфейс поиска. Кроме того, вы можете настроить его для включения любых элементов поиска, которые вам нравятся.источник