2011-11-21 6 views
5

è possibile in emacs cercare il nomefile in un modo in cui scrivo prima l'estensione quindi lo spazio e dopo il nome del file stesso? Per esempio. note org org o non passerà a notes.org.Emacs - passa al buffer digitando l'estensione e quindi il nome del file

Oppure c'è un modo per scrivere una funzione del genere per fare esattamente questo?

+0

Per curiosità: qual è il caso d'uso per questo tipo di funzionalità? –

+1

Permetterebbe di vedere facilmente tutti i file di un determinato tipo nel caso in cui siano aperti molti buffer. – Jarek

+0

Ah, ok capisco. Grazie! –

risposta

11

Se si utilizza l'ido è possibile digitare le note di c-space org.

Ido impiega un po 'di tempo per abituarsi, ma personalmente non posso vivere senza di esso.

+0

Per quelli di voi che stanno per invitare l'ido, controlla tutto-config. La finestra divisa ti consente di vedere le stringhe lunghe come i nomi di file/buffer molto meglio e ci sono un sacco di fonti predefinite che puoi combinare. –

+0

Personalmente io uso ido, e sì, può farlo. Qualcosa come questo '' C-x b. Estensione M-m nome''. @event_jr Non ho mai usato "ghiaccioli" o "nulla" prima (ma ho usato iswitchb e ho commentato perché l'ido può fare di meglio). Puoi dire in poche parole sulla compatibilità Ido/Icicles/Anything? Stanno tutti facendo le stesse cose, o c'è un motivo per usarli insieme? – desudesudesu

+0

AFAIK qualsiasi cosa è compatibile con ido. Non vedo però un motivo per usare entrambi. Ido e qualsiasi cosa fanno cose simili, tranne che qualcosa mostra le scelte in un buffer regolare, non nel minibuffer. –

3

Anything può farlo facilmente, eseguire qualsiasi cosa, digitate le parole il nome del tampone, Risultati mostra:

Emacs Anything

seguire questo per installarlo: http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html

se si può desiderare di filtrare buffer, ecco un esempio di configurazione per voi:

(require 'anything-config) 
(global-set-key (kbd "C-x b") 
      (lambda() (interactive) 
       (anything 
       :prompt "Switch to: " 
       :sources 
       '(anything-c-source-buffers)))) 
+0

Peccato che non venga aperta nessuna versione più grande dell'immagine se clicco su di essa. Sarebbe utile leggere effettivamente ciò che è presente sullo screenshot per avere un'idea di questa funzionalità. – Tom

+0

Il parametro di default any-config fa esattamente ciò che l'OP ha richiesto. Se la prima parola è anche una modalità principale, vale a dire org, allora qualsiasi cosa usa la modalità principale come filtro. –

+1

Tom: Basta aprire direttamente l'immagine - in realtà è più grande di quella (per non dire divertente ricorsivamente). – phils

1

Sono completamente d'accordo con E ers, IDO è abbastanza utile. Ad esempio, se hai due buffer "some-video-page.js" e "video.py" puoi inserire "C-x b vidjs" o "C-x b vidpy" per passare a uno di questi.

(ido-mode) 
(setq ido-enable-flex-matching t) 

Considera anche utilizzando ibuffer per organizzare voi buffer. È possibile filtrare i buffer in base al nome file completo e chiudere più buffer in base al filtro corrente.

(global-set-key (kbd "C-x C-b") 'ibuffer) 

Tornando alla tua domanda. Esiste la libreria uniquify che ora viene fornita con Emacs e includerà il nome della directory superiore nei nomi dei buffer per impostazione predefinita. Ma questo è emacs di cui stiamo parlando e puoi personalizzarlo come vuoi. Ho un hook di file personalizzato che prefigura solo i buffer python con il nome del modulo python. IDO sarà sufficiente per te o vuoi ancora che i tuoi buffer di commutazione personalizzati funzionino?

1

Icicles fa questo fuori dalla scatola - basta usare S-TAB anziché TAB per il completamento - cioè apropos completion anziché completamento prefisso.

Per completare da più schemi (ad esempio sottostringhe) senza riguardo al loro ordine, utilizzare progressive completion. Si utilizza S-SPC per separare i motivi.

 
    C-x C-f notes S-SPC org 

o

 
    C-x C-f org S-SPC notes 

o, per essere sicuri che org è abbinato come estensione di file, utilizzare \.org. (Oppure utilizzare C-` per alternare corrispondenza sottostringa/regexp, vale a dire, la fuga di caratteri speciali regexp.)

Stessa cosa se si utilizza il completamento del buffer-nome (o qualsiasi altro tipo di completamento), piuttosto che file-name completamento.

Per quanto riguarda matching "flex" di Ido, Icicles ha la stessa cosa (si chiama matching "dispersione"), così come molti altri tipi di fuzzy matching. (Ma tutte le forme di corrispondenza fuzzy sono meno utili di quelle che suonano, IMHO.)

1

È possibile (approssimativamente) eseguire questa operazione per impostazione predefinita utilizzando il nome globbing.

C-xb*.orgTAB

Emacs mosse puntano automaticamente a sedersi dopo l'asterisco, in modo da poter continuare a immediatamente a digitare parte del nome del buffer.

Anche *org è leggermente più semplice da digitare rispetto a *.org e probabilmente otterrà risultati sufficientemente simili per i propri scopi.

1

Iswitchb, fornito con Emacs, non fa esattamente questo, ma chiude. Mostra un elenco di nomi di buffer nel minibuffer. Mentre digiti, la lista si restringe ai buffer il cui nome contiene il testo che hai digitato (ovunque, non solo all'inizio). Quindi, se digiti .org, ti ritroverai nei buffer il cui nome contiene .org. Per aprire un file specifico tra questi, è necessario spostare il cursore a sinistra e digitare le ultime lettere del nome del file oppure premere C-r o C-s per ruotare tra le partite.

Il wiki di Emacs ha uno page on Iswitchb e uno comparison of Icicles, Ido and Iswitchb.

+0

Amo iswitchb, ma non ho mai saputo della cosa C-r/C-s, che è incredibilmente utile. :) – RealityMonster

Problemi correlati