Używam ido-mode
, ale jedną rzeczą, której nienawidzę, jest to, że po tym, jak C-x C-f
nie mogę używać up/down
klawiszy, aby przechodzić między ostatnio otwieranymi plikami, jak kiedyś iswitchb
. Jak mogę ustawić, ido
aby działało w ten sposób?
Patrząc na opcje dostosowywania dla ido-mode
( M-x customize-group
RET ido
RET), nie widzę żadnych możliwości włączenia opisywanego zachowania podczas jazdy na rowerze.
Możesz jednak dodać do pliku init następujące:
(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)
W tym miejscu możesz nacisnąć, C-x C-raby uzyskać ukończenie Ido wyboru ostatnio otwieranych plików.
Domyślnie 20 najnowszych plików będzie przechowywanych w historii. Sugeruję zwiększenie tej wartości do około 150, ustawiając recentf-max-saved-items
:
(setq recentf-max-saved-items 150)
Nie widzę tego w wielu miejscach, ale dzięki wirtualnym buforom Ido dostęp do najnowszych plików jest bardzo łatwy . Włącz je w następujący sposób:
(setq ido-use-virtual-buffers t)
Otrzymujesz takie zachowanie:
Jeśli nie
nil
, odwołaj się do przeszłych („wirtualnych”) buforów, a także istniejących.Zasadniczo działa w następujący sposób: Załóżmy, że odwiedzasz plik i bufor jest czyszczony przez
midnight.el
. Później chcesz przejść do tego bufora, ale okaże się, że nie jest już otwarty. Po włączeniu wirtualnych buforów nazwa bufora pozostaje na liście buforów (przy użyciuido-virtual
twarzy i zawsze na końcu), a jeśli go wybierzesz, ponownie otworzy plik. Pozwala to mniej myśleć o tym, czy ostatnio otwierane pliki są nadal otwarte, czy nie. Przez większość czasu możesz wyjść z Emacsa, uruchomić ponownie, a następnie przejść do bufora plików, który był wcześniej otwarty tak, jakby był nadal.
C-x C-r
nie można otworzyć nowego pliku. Dziwi mnie również to, że nie można go w prosty sposób dostosować. HistoriaC-x C-f
jest tak oczywistą cechą, że nie mogę zrozumieć, dlaczego nie została jeszcze wdrożonaido
. Na przykładM-x up/down
przełącza między ostatnimi poleceniami,M-% up/down
zastępuje ostatnie zapytania, nawet poza emacsem - wszystkie powłoki jako bash lub zsh używają góra / dół do przywołania poprzednich poleceń. Dla mnieC-x C-f up/down
powinien przewijać ostatnio otwierane pliki. Kropka.ido-use-virtual-buffers
- świetna funkcja, która naprawdę powinna być domyślnie włączona w IMO.Choć Wiązania ewoluowały w czasie, jak dzisiejszy, kiedy powoływać
ido-find-file
lubido-find-file-read-only
można użyć następujących powiązań dostępny w domyślnej konfiguracji:ido-prev-work-file
ido-next-work-file
Oprócz tego, że nie są tak ergonomicznie przyjemne jak M-pi M-nwiązania, do których przywykłem przed wypróbowaniem ido , są one również powolne, a wynikające z tego rozmowy w minibuforach są rozpraszające i zagmatwane. ido robi coś więcej niż tylko pokazuje ostatnio otwartą nazwę pliku; zgłasza, że „szuka nazwy pliku ” ... ”, być może z niechęci do zaoferowania nazwy pliku, który już nie istnieje.
Komunikat „Wyszukiwanie” pochodzi z funkcji
ido-make-merged-file-list
. Czytając źródło , nie widzę żadnego sposobu na wyłączenie jakiejkolwiek magii, jaką robi ta funkcja.Możesz rozważyć ponowne powiązanie
ido-prev-work-file
iido-next-work-file
sparowanie z czymś bardziej naturalnym, takim jak C-M-pi C-M-n, lub zamianę dla nich powiązań prądu M-p(ido-prev-work-directory
) i M-n(ido-next-work-directory
).Oto kod Emacs Lisp, aby przywrócić M-pi M-ndo cyklu przez ostatnich plików, przenoszenie domyślnym katalogu koncentruje się powiązania C-M-pi C-M-nodpowiednio:
źródło
w tym przypadku powróciłem do normalnego zachowania minibufora, wpisując Cf w idomode. Wtedy będziesz mieć normalne klucze przeglądania historii. Jeśli znasz to z góry, może być szybki: Cxff :-)
źródło
Odpowiedź udzielona przez @itsjeyd jest dość kompletna. Pozwól, że zasugeruję funkcję:
Dzięki uprzejmości WikEmacs
źródło
Uważam, że
helm-for-files
działa lepiej niż którakolwiek z powyższych odpowiedzi w celu automatycznego uzupełniania nazw plików i posiadania ładnego interfejsu wyszukiwania. Możesz także skonfigurować, aby zawierał dowolne wyszukiwane elementy.źródło