我使用Emacs和修订跟踪器(perforce)来处理与工作相关的事情。
我为Perforce提供了许多(~10个)不同的客户端,它们都具有相同的文件结构。我想制作通用命令以导航到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/
),然后将客户端路径中的实际路径追加到客户端路径(ip/src/bin
)。
注意:我确实有bash别名,可以快速导航到独立于客户端名称的目录。但我想通过找到一个在Emacs内部工作的解决方案尽可能地减少Emacs和命令行之间的切换。
find-file
的内容中使用该变量。它将在完成期间扩展。invocation-directory
的值。如果您的客户端位置很容易确定(“客户端路径(/path/to/client/
)是根据我启动Emacs的位置动态计算出来的”),那么您可以定义一个命令来读取客户端目录中的文件(或目录)名称。对于#2,你的“客户端路径(/path/to/client/
)...如何根据[你]启动Emacs的位置动态计算出来”?如果你显示该代码,那么剩下的应该是微不足道的。