2011-11-21 8 views
5

czy w pliku emacs można wyszukać nazwę pliku w taki sposób, że najpierw wpisuję rozszerzenie, a następnie spację i nazwę tego pliku? Na przykład. org notes org lub nie przejdzie na notes.org.Emacs - przełącz na bufor, wpisując rozszerzenie, a następnie nazwę pliku

Czy jest jakiś sposób, aby napisać taką funkcję, aby zrobić dokładnie to?

+0

Z ciekawości: Jaki jest przypadek użycia dla tego rodzaju funkcji? –

+1

Pozwoliłoby mi to z łatwością zobaczyć wszystkie pliki danego typu w sposób otwarty dla wielu buforów. – Jarek

+0

Ahh, ok, rozumiem. Dzięki! –

Odpowiedz

11

Jeśli używasz ido, możesz wpisać notatki z org c-space.

Ido potrzebuje trochę czasu, żeby się przyzwyczaić, ale osobiście nie mogę żyć bez niego.

+0

Dla tych z was, którzy chcą pobudzić ido, sprawdź wszystko-config. Rozdzielone okno umożliwia znacznie lepsze wyświetlanie długich ciągów, takich jak nazwy plików/buforów, a także mnóstwo wstępnie zdefiniowanych źródeł, które można łączyć i łączyć. –

+0

Osobiście używam ido, a tak, może to zrobić. Coś jak to '' C-x b .rozszerzenie M-m nazwa''. @event_jr Nigdy wcześniej nie używałam "sopli" lub "czegoś" (ale użyłem iswitchb i skomentowałem to, ponieważ ido może zrobić lepiej). Czy możesz powiedzieć w kilku słowach o zgodności Ido/Icicles/Anything? Czy wszyscy robią te same rzeczy, czy też istnieje powód, aby używać ich razem? – desudesudesu

+0

AFAIK wszystko jest kompatybilne z ido. Nie widzę powodu, aby używać obu. Ido i cokolwiek robi podobne rzeczy, z wyjątkiem wszystkiego, co pokazuje wybory w zwykłym buforze, a nie w minibuforze. –

3

Anything można to zrobić łatwo uruchomić coś wpisać jakiekolwiek słowa nazwy bufora, przedstawia wyniki:

Emacs Anything

śledzić to, aby go zainstalować: http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html

czy może chcesz filtrować bufor, tutaj jest przykład konfiguracji dla ciebie:

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

Szkoda, że ​​nie ma większej wersji obrazu, jeśli go kliknę. Byłoby użyteczne, aby przeczytać to, co jest na zrzucie ekranu, aby poznać tę funkcję. – Tom

+0

Domyślne ustawienie cokolwiek-config robi dokładnie to, o co prosił OP. Jeśli pierwsze słowo jest także trybem głównym, tj. Org, to wszystko używa trybu głównego jako filtra. –

+1

Tom: Po prostu otwórz obraz bezpośrednio - jest on w rzeczywistości większy (nie wspominając o rozrywkowej rekurencji). – phils

1

Całkowicie zgadzam się z ers, IDO jest całkiem przydatny. Na przykład, jeśli masz dwa bufory "some-video-page.js" i "video.py", możesz wpisać "C-x b vidjs" lub "C-x b vidpy", aby przejść do jednego z nich.

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

Należy także rozważyć użycie ibuffer do organizowania buforów. Można filtrować bufory według pełnej nazwy pliku i zamykać wiele buforów na podstawie bieżącego filtru.

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

Powracam do pytania. Istnieje biblioteka uniquify, która jest teraz dostarczana z Emacsem i domyślnie zawiera nazwę katalogu nadrzędnego w nazwach buforów. Ale to jest emacs, o którym mówimy i możesz go dostosować, jak chcesz. Mam niestandardowy hook, który przedrostkuje tylko bufory python z nazwą modułu Pythona. Czy IDO będzie dla Ciebie wystarczający, czy nadal chcesz, aby Twoje niestandardowe bufory przełączające działały?

1

Icicles czy to z pudełka - wystarczy użyć S-TAB zamiast TAB do zakończenia - tj apropos completion zamiast uzupełniania prefiksu.

Aby zakończyć z wieloma wzorami (np. Podciągi) bez względu na ich kolejność, należy użyć progressive completion. Używasz S-SPC do oddzielania wzorów.

 
    C-x C-f notes S-SPC org 

lub

 
    C-x C-f org S-SPC notes 

lub, aby mieć pewność, że org jest dopasowany jako rozszerzenie pliku, użyj \.org. (Lub użyć C-` aby przełączać dopasowanie podciąg/regexp, tj ucieczce z regexp znaków specjalnych).

samo jeśli używasz zakończenie bufor-name (lub innego rodzaju zakończenia) zamiast nazwy pliku ukończenie.

chodzi o „flex” dopasowywania IDO, w Sople ma to samo (to się nazywa „rozrzut” dopasowanie), a także kilka innych rodzajów fuzzy matching. (Ale wszystkie formy dopasowania rozmytego są mniej użyteczne niż brzmią, IMHO.)

1

Możesz (w przybliżeniu) zrobić to domyślnie, używając nazwy globbing. porusza

C-xb*.orgTAB

Emacsa wskazać automatycznie siedzieć po gwiazdką, więc można od razu kontynuować wpisując część nazwy buforowego.

Jest również nieco łatwiejszy do wpisania niż i prawdopodobnie zapewniłby Ci wystarczająco podobne wyniki do Twoich celów.

1

Iswitchb, dostarczany z Emacsem, nie robi dokładnie tego, ale jest blisko. Pokazuje listę nazw buforów w minibuforze. Podczas pisania lista zawęża się do buforów, których nazwa zawiera wpisany tekst (gdziekolwiek, nie tylko na początku). Więc jeśli wpiszesz .org, będziesz w dół do buforów, których nazwa zawiera .org. Aby otworzyć między nimi określony plik, należy albo przesunąć kursor w lewo i wpisać ostatnie litery nazwy pliku, albo nacisnąć C-r lub C-s, aby obrócić między dopasowaniami.

Wiki Emacs ma numer page on Iswitchb i comparison of Icicles, Ido and Iswitchb.

+0

Uwielbiam iswitchb, ale nigdy nie wiedziałem o C-r/C-s, co jest niesamowicie pomocne. :) – RealityMonster

Powiązane problemy