如何制作emacs快捷方式在相关文件之间切换?

如何制作emacs快捷方式在相关文件之间切换?

问题描述:

例如,我有文件模型/ user.py开放,我想有打开控制器/ user.py的快捷方式。或者,我想切换到测试/模型/ testUser.py(人为的例子)如何制作emacs快捷方式在相关文件之间切换?

我想打一个Emacs快捷方式,其给出当前打开的文件,打开以各种方式相关的文件。

+1

“打开以各种方式相关的文件”,你可能希望得到更多的具体的关于“各种方式”的含义。 –

如果“相关文件”遵循某种模式,我认为这是微不足道的写一些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

如果你不喜欢写这个自己宁愿自定义exisiting库,你可能会喜欢看toggle.el。它旨在做你所要求的。

+0

我也很喜欢。定制是关键。例如,我们可以在查看2个不同目录中的类似文件时,执行dir1/filename dir2/filename。 – aartist

还有jump.elrinari用于此目的(Ruby on Rails项目除外)。我给了第二个链接,因为这个项目中的rinari.el包含管理从一个地方到另一个地方的跳转(控制器到视图,模型,迁移等)的设置。

它看起来像你可以得到jump.el跳转到一个文件中的特定方法 - 但可能需要一点努力。