导航到emacs中不同修订版本树之间的目录的最快方法

时间:2019-02-22 16:47:13

标签: emacs navigation directory bookmarks

我将Emacs和修订跟踪器(perforce)用于与工作相关的事情。

我有许多(〜10个)Perforce客户端,它们都有相同的文件结构。我想使用通用命令来导航到Emacs中这些客户端中的目录。

但是,客户端路径不同。我想使跨目录的导航独立于客户端名称;而是应动态确定客户端名称。

例如,以下是通往客户的各种路径:

/home/scratch/client1/hw/unit1/
/home/scratch2/client2/hw/unit2/
/home/scratch3/client3/hw/unit1/

如您所见,尽管遵循相同的结构,但通往每个客户端的路径有所不同。在每个客户端中,文件结构是相同的。因此,每个客户端的单位文件将具有相同的结构(即ip/src/或某些等效路径)

我看到了很多为目录添加书签以快速跳转到它们的解决方案,但是我需要在所有路径略有不同的所有客户端上都能动态工作的解决方案。当前,如果我使用书签功能,它将把我的整个客户端路径复制到目录中,而不是基于当前客户端的路径。

对我来说,这意味着我需要可以动态确定客户端位置的东西,然后在每个客户端中显示相同的书签文件。

因此,假设我希望基于当前所在的客户端显示以下三个加标签的目录:

/path/to/client/ip/src/bin
/path/to/client/ip/src/etc
/path/to/client/ip/src/inc

我该如何在Emacs中执行此操作,以便根据我启动Emacs的位置来动态计算出客户端路径(/path/to/client/),然后将客户端中的实际路径附加到客户端路径({{1 }}。

注意:我确实有bash别名,可以快速导航到与客户端名称无关的目录。但是,我想通过找到一种在Emacs内部运行的解决方案来尽可能地减少Emacs和命令行之间的切换。

1 个答案:

答案 0 :(得分:0)

  1. 环境变量中是否有指向当前客户端的路径?如果是这样,则可以在键入find-file的内容中使用该变量。它将在完成时进行扩展。

  2. 调用Emacs本身的目录是变量invocation-directory的值。如果您可以轻松地确定您的客户端位置(“根据我启动Emacs的位置来动态找出客户端路径(/path/to/client/)” ),那么您可以定义一个读取文件的命令(或目录)客户目录中的名称。

对于#2,您的“客户端路径(/path/to/client/)...是根据[您]启动Emacs的位置来动态找出的??如果您显示该代码,那么其余的代码应该是微不足道的。