2011-11-21 82 views
5

emacs有可能以一種方式搜索文件名,這種方式是先鍵入擴展名,然後是空格鍵,然後是文件名後面?例如。 org notes org 或不會將切換到notes.org。Emacs - 通過鍵入擴展名,然後輸入文件名切換到緩衝區

或者有什麼辦法可以編寫這樣的函數來做到這一點?

+0

出於好奇:這種功能的用例是什麼? –

+1

它會讓我很容易地看到給定類型的所有文件,以方便打開許多緩衝區。 – Jarek

+0

啊,好吧,我明白了。謝謝! –

回答

11

如果您使用ido,您可以輸入org c-space備註。

伊多需要一點時間去習慣,但個人我不能沒有它生活。

+0

對於那些想要upvote ido的人來說,checkout anything-config。分割窗口讓您可以更好地查看諸如文件/緩衝區名稱之類的長字符串,並且可以混合使用大量預定義的源代碼。 –

+0

我個人使用ido,是的,它可以做到。像這樣的「C-x b。擴展M-m名稱」。 @event_jr我從來沒有使用過「冰柱」或「任何東西」(但我使用iswitchb並將它評論出來,因爲ido可以做得更好)。你能說幾句關於Ido/Icicles/Anything的兼容性嗎?他們都在做同樣的事情,還是有理由一起使用它們? – desudesudesu

+0

AFAIK任何東西都與ido兼容。雖然我沒有看到使用兩者的理由。 Ido和任何類似的東西,除了任何東西在常規緩衝區中顯示選項,而不是小緩衝區。 –

3

Anything可以做到這一點很容易,運行任何程序,輸入緩衝區的名稱的話,結果表明:

Emacs Anything

按照這個進行安裝:http://emacs-fu.blogspot.com/2011/09/finding-just-about-anything.html

如果你能要過濾緩衝區,這裏是你的配置示例:

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

可惜沒有更大版本的圖像打開,如果我點擊它。實際閱讀屏幕截圖上的內容以掌握此功能將非常有用。 – Tom

+0

默認的任何配置匹配器完全是OP請求的。如果第一個單詞也是主要模式,即org,那麼任何東西都將主要模式用作過濾器。 –

+1

湯姆:直接打開圖像 - 它實際上比這更大(更不用說有趣的遞歸)。 – phils

1

我完全同意And ers,IDO非常有用。例如,如果您有兩個緩衝區「some-video-page.js」和「video.py」,則可以輸入「C-x b vidjs」或「C-x b vidpy」切換到其中任何一個。

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

還考慮用ibuffer來組織你的緩衝區。您可以按完整文件名過濾緩衝區,並根據當前過濾器關閉多個緩衝區。

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

回到你的問題。 Emacs現在提供了uniquify庫,默認情況下它將在緩衝區名稱中包含父目錄的名稱。但是,這是我們正在談論的emacs,您可以根據需要自定義它。我有一個自定義的文件鉤子,前綴只有python模塊名稱的python緩衝區。 IDO對你來說是否夠用,還是你還想要自定義的開關緩衝功能?

1

Icicles這是否開箱 - 只需使用S-TAB,而不是TAB完成 - 即apropos completion而不是前綴完成。

要完成針對多種模式(例如子串)而不考慮其順序,請使用progressive completion。您使用S-SPC來分離模式。

 
    C-x C-f notes S-SPC org 

 
    C-x C-f org S-SPC notes 

,或者以確保org匹配的文件擴展名,使用\.org。 (或者使用C-`切換串/正則表達式匹配,即,正則表達式特殊字符轉義。)

同樣的事情,如果你使用緩衝名完成(或任何其他形式完成的),而不是文件名完成。

至於Ido的「flex」匹配,冰柱有同樣的事情(它被稱爲「分散」匹配),以及其他幾種類型的fuzzy matching。 (但是,所有形式的模糊匹配比它們的聲音更有用,恕我直言。)

1

您可以(近似)通過使用名稱通配來完成此操作。

C-Xb*.orgTAB

Emacs的移動自動指向的星號後坐,讓您可以立即繼續輸入緩衝區名稱的一部分。

另外*org*.org稍微容易打字,並且可能會爲您達到足夠類似的效果。與Emacs一起發貨的

1

Iswitchb並不完全是這樣,而是接近。它顯示了小緩衝區中的緩衝區名稱列表。在輸入時,列表將縮小到名稱中包含您鍵入的文本的緩衝區(任何地方,而不僅僅是開頭)。所以,如果你輸入.org,那麼你將下載到名稱爲.org的緩衝區。要打開這些文件中的特定文件,您需要將光標移到左側並輸入文件名的最後一個字母,或者按C-rC-s在這些匹配之間旋轉。

Emacs wiki有page on Iswitchbcomparison of Icicles, Ido and Iswitchb

+0

我愛iswitchb,但我從來不知道C-r/C-s的東西,這非常有幫助。 :) – RealityMonster

相關問題