2013-12-13 5 views
5

, bunu yapmak için herhangi bir iyi bir yol var mı? Far Dosya Yöneticisi'nde insanların Alt tuşuna basıp yazarak yazmaya başladığını biliyorum. İmleç yazdıkça hareket edecek ve Emacs'in benzer bir şey olup olmadığını merak ediyorum.Emacs Dired'de bir dosyaya nasıl hızlı gidilir? Bir dizin çok sayıda dosya içerir ve bir harf (veya bir dize) ile başlayan dosyalar (veya alt dizinleri) adı ile gitmek isterseniz

+0

Aşağıdaki cevabımda, yinelemeli arama dizini üzerine bir not ekledim. – Tobias

+0

alt dizinlerinde (örneğin, yinelemeli olarak) bir dosya bulmakla ilgileniyorsanız, "mermi" ve "proje dosyasında bul" ve "dosya-dizin-bul" işlevlerine bir göz atmalısınız. : https://github.com/bbatsov/projectile – Ehvince

+0

Ve sonra İsviçre ordu bıçağı var: http://www.emacswiki.org/emacs/TN bölümünde "Dış programlara bağımlı olmadan grepping" bölümü Eğer elgrep diyorsanız 'önek-tuşu ile tekrarlayıcı arar ve sadece dosya ismi için regexp'i belirtirseniz ve diğer regexp'i boş bırakırsanız, sadece bu tür bir dosya ismiyle dosyaları arar. – Tobias

cevap

6

bir bölüm kopyalıyor bu soruyu cevaplamak için hızlı yolu emacs bilgi dosyaları. bu metin tip için Chalmak için idmemacsret ve sonra isearch ilk Failing I-search ya da sadece ile bilgi gitmek Chi görmezden uygun bir alt dizeyi sonra doğrudan gitmek g ve RET ardından düğüm adı yazarak aşağıda belirtilen bilgileri düğüme.

biri dired tamponu içinde olup olmadığını çalışır (emacs) Dired and Find bilgi düğümü birinci:

To search for files with names matching a wildcard pattern use `M-x 
find-name-dired'. It reads arguments DIRECTORY and PATTERN, and 
chooses all the files in DIRECTORY or its subdirectories whose 
individual names match PATTERN. 

bilgileri-düğümden ikinci (emacs) Dired Navigation dired tamponlarda çalışır ancak şu anda listelenen dosyaların için geçerlidir . Ancak, alt dizinleri daha önce i ile listeleyebileceğinizi unutmayın.

`M-s f C-s' (`dired-isearch-filenames') performs a forward 
incremental search in the Dired buffer, looking for matches only 
amongst the file names and ignoring the rest of the text in the buffer. 
`M-s f M-C-s' (`dired-isearch-filenames-regexp') does the same, using a 
regular expression search. If you change the variable 
`dired-isearch-filenames' to `t', then the usual search commands also 
limit themselves to the file names; for instance, `C-s' behaves like 
`M-s f C-s'. If the value is `dwim', then search commands match the 
file names only when point was on a file name initially. *Note 
Search::, for information about incremental search. 

DÜZENLEME: yinelemeli ilk özyinelemeli olarak listeleyebilir bir dizin iSearch belirleyin.

Alt dizinleri, önek argümanıyla dired numaralı telefonu arayarak ve anahtar listesine R ekleyerek listeleyebilirsiniz.

bile bu görevi basitleştirmek olur emacs başlatma dosyası için aşağıdaki pasajı: bulmak dosyası ararsanız sizin için dizinleri normal listesini almak bu pasajı ile (CxCf)

(defun dired-noselect-maybe-recursive (dir-or-list &optional switches) 
    "Like `dired-noselect' but lists sub-directories when last character is ?/." 
    (if (and (null switches) 
     (= (aref dir-or-list (1- (length dir-or-list))) ?/)) 
     (dired-noselect dir-or-list "-alR") 
    (dired-noselect dir-or-list switches) 
    )) 

(setq find-directory-functions (subst 'dired-noselect-maybe-recursive 'dired-noselect find-directory-functions)) 

sonunda bir eğik çizgi olmayan bir dizin ve sonunda bir eğik çizgi ile çağırırsanız özyinelemeli bir liste alırsınız. Ama dikkatli ol. Yinelemeli dizin listesi zaman alabilir. Gergin alırsanız her zaman C-g ile çıkabilirsiniz.

2

ISearch yapacak. control-s, sonra yazmaya başla. o emacs' genel amaçlı arama fonksiyonu olduğuna göre sen de adının yeterince elde edene kadar

, bu tampon başka şeyler eşleşen dışarı başlatabilir.

1

@Tobias ve @ jl8e hem doğrudan sorunuza yanıt vardır: C-s (artışlı arama) kullanın. Buna eklenecek bir şey yok.

Ancak, listelenen dosyaların bir alt kümesini birden çok kez kullanacaksanız veya dosyaların bir alt kümesinde aynı işlemi gerçekleştirecekseniz ve bu alt küme bir dosya adı deseni ile tanımlanıyorsa (örn. aynı önek), daha sonra regexp ile eşleşen tüm dosyaları işaretlemek için %m'u kullanabilirsiniz.İşaretlendikten sonra, işaretlenmiş dosyalar kümesinde (veya işaretlenmemiş olanların setinde) her türlü şeyi yapabilirsiniz.

(sadece listeden ve dolayısıyla operasyonlardan işaretlenmiş veya işaretlenmemiş dosya adları ihmal edilir yapabileceği şeylerden biri.)

dired çoğunlukla setlerinin üzerine inceleyerek ve işletim konusunda gerçekten Dosyalar. Singleton seti özel bir durumdur ve işaretlenmiş dosyalar üzerinde çalışan tüm işlemler (tuşlar), hiçbiri işaretlenmemişse sadece geçerli satırın dosyasında da çalışır.

3

Sadece o sorunuza şekilde alakalıdır var kullanmak ister bir numara eklemek istiyorum: sadece bir dosya için çalışır Açıkçası

(add-hook 
'dired-mode-hook 
(lambda() 
    (define-key dired-mode-map "j" 'ido-find-file))) 

ve çok sayıda sunan yerine, onu açan yönetilen şeylerin bir dosyaya yapabileceği, ama en azından hızlı.

İlgili konular