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

时间:2011-07-20 02:01:12

标签: emacs elisp

例如,我打开了文件model / user.py,我想要一个打开controller / user.py的快捷方式。或者我想切换到test / model / testUser.py(人为的例子)

我想创建一个emacs快捷方式,它给出了一个当前打开的文件,以各种方式打开相关的文件。

3 个答案:

答案 0 :(得分: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)

当然,这只是一个粗略的例子(因为你没有提供很多具体的细节),但应该足以让你开始。希望它有所帮助!

答案 1 :(得分:2)

如果您不想自己写这篇文章而宁愿自定义现有的库,那么您可以查看toggle.el。它旨在满足您的需求。

答案 2 :(得分:0)

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

看起来你可以跳转到文件中的特定方法 - 但这可能需要一些努力。