Eu uso ido-mode
, mas uma coisa que odeio é que depois C-x C-f
que não consigo usar as up/down
teclas para percorrer os arquivos abertos recentemente, como costumava ser, por exemplo, com iswitchb
. Como posso ido
trabalhar dessa maneira?
Observando as opções de personalização para ido-mode
( M-x customize-group
RET ido
RET), não vejo opções para ativar o comportamento de ciclismo que você descreve.
Você pode, no entanto, adicionar o seguinte ao seu arquivo 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)
Com isso, você pode pressionar C-x C-rpara concluir o Ido para selecionar arquivos abertos recentemente.
Por padrão, os 20 arquivos mais recentes serão mantidos no histórico. Eu sugiro que você aumente até 150, definindo recentf-max-saved-items
:
(setq recentf-max-saved-items 150)
Eu não vê-lo mencionado em um monte de lugares, mas Ido Buffers Virtuais torná-lo super fácil para acessar arquivos recentes. Habilite-os assim:
(setq ido-use-virtual-buffers t)
O comportamento que você recebe é este:
Se não
nil
, consulte buffers passados ("virtuais") e também existentes.Basicamente, funciona da seguinte maneira: digamos que você esteja visitando um arquivo e o buffer seja limpo
midnight.el
. Mais tarde, você deseja alternar para esse buffer, mas descubra que ele não está mais aberto. Com os buffers virtuais ativados, o nome do buffer permanece na lista de buffers (usando aido-virtual
face e sempre no final) e, se você o selecionar, ele abrirá o arquivo novamente. Isso permite que você pense menos se os arquivos abertos recentemente ainda estão abertos ou não. Na maioria das vezes, você pode sair do Emacs, reiniciar e alternar para um buffer de arquivo que estava aberto anteriormente como se ainda estivesse.
C-x C-r
isso não é possível abrir um novo arquivo. Também estou surpreso por não ser possível personalizá-lo de maneira simples. A história deC-x C-f
é uma característica tão óbvia que não consigo entender por que ainda não foi implementadaido
. Por exemplo,M-x up/down
alterna entre comandos recentes,M-% up/down
alterna entre substituições de consultas recentes, mesmo fora do emacs - todos os shells como bash ou zsh usam cima / baixo para recuperar comandos anteriores. Para mimC-x C-f up/down
deve percorrer os arquivos abertos recentemente. Ponto final.ido-use-virtual-buffers
- um ótimo recurso que realmente deve estar ativado por padrão na IMO.Embora as ligações tenham evoluído ao longo do tempo, a partir de hoje, quando você chama
ido-find-file
ouido-find-file-read-only
, é possível usar as seguintes ligações disponíveis na configuração padrão:ido-prev-work-file
ido-next-work-file
Para além destes, não sendo tão ergonomicamente agradável como o M-pe M-nligações que eu tinha sido usado para antes de tentar ido , eles também são lentos, ea consequente tagarelice minibuffer é distrair e confundir. ido faz algo mais do que apenas mostrar um nome de arquivo aberto recentemente; ele relata que está "Procurando por ' nome do arquivo ' ...", talvez por relutância em oferecer um nome para um arquivo que não existe mais.
A mensagem "Procurando" vem da função
ido-make-merged-file-list
. Lendo a fonte , não vejo nenhuma maneira de desativar qualquer mágica que esta função esteja fazendo.Você pode considerar rebobinar os pares
ido-prev-work-file
eido-next-work-file
para algo mais natural como C-M-pe C-M-n, ou trocar as ligações current M-p(ido-prev-work-directory
) e M-n(ido-next-work-directory
) por elas.Aqui está o código Emacs Lisp para restaurar M-pe M-nalternar entre arquivos recentes, movendo as ligações focadas em diretório padrão para C-M-pe C-M-nrespectivamente:
fonte
O que recorri neste caso é voltar ao comportamento normal do minibuffer digitando Cf no idomode. Então você terá as chaves normais de navegação no histórico. Se você o conhece com antecedência, pode ser rápido: Cxff :-)
fonte
A resposta dada por @itsjeyd é bastante completa. Deixe-me apenas sugerir uma função:
Cortesia de WikEmacs
fonte
Eu achei que
helm-for-files
funciona melhor do que qualquer uma das respostas acima para fins de preenchimento automático de nome de arquivo e com uma interface de pesquisa agradável. Além disso, você pode configurá-lo para incluir qualquer item de pesquisa que desejar.fonte