2011-07-20 34 views
0

例如,我有文件模型/ user.py開放,我想有打開控制器/ user.py的快捷方式。或者,我想切換到測試/模型/ testUser.py(人爲的例子)如何製作emacs快捷方式在相關文件之間切換?

我想打一個Emacs快捷方式,其給出當前打開的文件,打開以各種方式相關的文件。

+1

「打開以各種方式相關的文件」,你可能希望得到更多的具體的關於「各種方式」的含義。 –

回答

3

如果「相關文件」遵循某種模式,我認爲這是微不足道的寫一些elisp的功能,做任務。比方說,你有一個模型,需要打開他相關的控制器,你需要做這樣的事情:

(defun my-open-related-controller() 
    (interactive) 
    (let* ((name (buffer-file-name))) ;gets the filename of the current buffer 
    ;; Of course, this is only an example. The point here is that you need 
    ;; to "discover" the name of the related file based on the current one. 
    (setf name (replace-regexp-in-string "model" "controller" name)) 

    ;; Now you will open the file(if it isn't open already) and switch to it 
    (find-file name))) 

然後,你可以綁定功能,比方說,F5:

(define-key name-of-the-mode-map [f5] 'my-open-related-controller) 

如果你想這個箱子全球約束力,用途:

(global-set-key [f5] 'my-open-related-controller) 

當然,這只是一個粗的例子(因爲你沒有給許多具體細節),但應該足以讓你開始。希望能幫助到你!

+0

因此,如果elisp沒有關閉,是否有可能更一般地寫這個?例如做一個可以調用的函數'(global-set-key [f5](make-file-switcher「controller」「model」))' –

+0

當然:'(defun make-file-switcher(from to) '(lambda()(interactive)(find-file(replace-regexp-in-string,(regexp-quote from),to(buffer-file-name)tt)))))' – Sean

2

如果你不喜歡寫這個自己寧願自定義exisiting庫,你可能會喜歡看toggle.el。它旨在做你所要求的。

+0

我也很喜歡。定製是關鍵。例如,我們可以在查看2個不同目錄中的類似文件時,執行dir1/filename dir2/filename。 – aartist

0

還有jump.elrinari用於此目的(Ruby on Rails項目除外)。我給了第二個鏈接,因爲這個項目中的rinari.el包含管理從一個地方到另一個地方的跳轉(控制器到視圖,模型,遷移等)的設置。

它看起來像你可以得到jump.el跳轉到一個文件中的特定方法 - 但可能需要一點努力。

相關問題