2012-01-27 7 views
5

私はずっとGNU Emacsのファイルナビゲーションモデルのファンでした。私はC-x C-f ...C-x bでバッファを切り替えています。時々C-mouse-1同じ名前のファイル間のEmacsのナビゲーション

package/message.py 
package/message.zcml 
package/ui/message.py 
package/ui/message.zcml 
package/ui2/message.py 
package/ui2/message.zcml 

このような状況ではいつものバッファの切り替えを:しかし、最近私は自分自身がこれらの線に沿って、同じ名前を持つ複数のファイルのセットを持っているプロジェクトでのプログラミングが、別のディレクトリに発見されてきた

ツールはあまり効率的ではありません。私が望むファイルがバッファーmessage.py<2>またはmessage.py<3>にあるかどうかを覚えておくのは難しいです。C-x bでそれらを切り替えるのはかなり難しいです。私が望むのは、おそらくタブバーや、作業中のファイルを整理して空間的な配置を維持できるようなメニューなので、すばやく切り替えることができます。私は簡単にspeedbartabbar-modeを見ましたが、それほど助けは見つかりませんでした。助言がありますか?

+0

へぇを、私はいくつかのpythonの作業と同じ問題を抱えていましたもの(すなわちdjango)。 settings.pyまたはtest.pyという名前のファイルはいくつありますか?私はまたあなたの問題の解決に本当に興味があります。 –

答えて

3

さらに便利なバッファ名を得るためにuniquifyを使用するのと同様に、「空間配置」ニーズにはibufferグループを使用することを検討してください。フィルタセットに基づいて名前付きグループを作成し、ファイルパス(*)でフィルタリングすることができます。そのため、これらのディレクトリごとに別々のグループを簡単に作成できます。

私は非常にデフォルトの代替としてibufferC-XC-Bを結合をお勧めします。もしuniquify設定と併せてido-modeを使用する場合は、バッファを切り替えるC-XBを入力するとき

それはさておき、その後、あなたは(単一化)バッファ名の任意の部分に対して、入力と一致することができます。 ido-enable-flex-matchingを有効にするか(代わりにLustyExplorerのようなものを使用すると)、そのバッファ名の未接続部分を入力すると、ファジーマッチングによってリストがインテリジェントに絞り込まれます(たとえば、 "mez2"と入力すれば "message.zcml | ui2 ")。個人的に私は、ファイル名フィルタを作るときibufferがのdiredバッファとしてだけでなく、ファイルバッファと一致することを好むので、私はそれに応じてそのフィルタを再定義

(*):

;; Enable ibuffer-filter-by-filename to filter on directory names too. 
(eval-after-load "ibuf-ext" 
    '(define-ibuffer-filter filename 
    "Toggle current view to buffers with file or directory name matching QUALIFIER." 
    (:description "filename" 
     :reader (read-from-minibuffer "Filter by file/directory name (regexp): ")) 
    (ibuffer-awhen (or (buffer-local-value 'buffer-file-name buf) 
         (buffer-local-value 'dired-directory buf)) 
     (string-match qualifier it)))) 
+0

バッファのための 'uniquify'と' ido-mode'は私が探していたものでした。しかし、試してみると、私はファイルのためにidoに慣れることができませんでした。 –

3

添付ファイルを変更せずにバッファの名前を変更できます。 M-x rename-buffer <ret> new-buffer-name <ret>。その後、より便利なバッファ名を使用して前後にバウンスすることができますが、変更を保存すると、各バッファに関連付けられた実際のファイルに移動します。あなたのケースでは

、あなたはui-messageui2-messagebase-messageにごmessage.py<n>ファイルの名前を変更することがあります。これらのファイルは、C-x bでより簡単にナビゲートすることができます。

6

私はBorbusから、この解決策が見つかりました:あなたの例から https://stackoverflow.com/a/845311/552421

;; uniquify changes conflicting buffer names from file<2> etc 
(require 'uniquify) 
(setq uniquify-buffer-name-style 'reverse) 
(setq uniquify-separator "/") 
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified 
(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers 

を、あなたのバッファが "message.py | UI" という名前になり、|など、 "message.py UI2" ...

+1

emacs-starter-kitの標準であるuniquifyが標準です。しかし、私はフォワードネームスタイルを好む。 – libjack

+0

emacs-starter-kit?クール、それを聞いたことがない! –

関連する問題