我认为您的问题的第一部分可以解决dirtrack-mode
。首先,设置外壳程序提示符以包括当前的工作目录。接下来,设置dirtrack-list
一个正则表达式,告诉dirtrack-mode
它如何提取它。示例:我PS1
在Bash中设置为:
export PS1="[\h:\w] $ "
在Emacs中,我设置dirtrack-list
并打开dirtrack-mode
:
(set-variable 'dirtrack-list '("^.*[^ ]+:\\(.*\\)]" 1 nil))
(dirtrack-mode 1)
(摘自这篇很棒的博客文章。)
之后,我可以随意更改目录,并且可以随时更改default-directory
。如果在外壳程序中以相同的方式将提示符设置为SSH,则通过SSH连接到远程计算机(在cd /etc/apache2
远程计算机上,将其更改default-directory
为),这也可以使用/etc/apache2
。但是请注意,这是本地的 -对于远程计算机,default-directory
仍将/etc/apache2
在本地计算机上设置为。
如果我理解您问题的第二部分,则希望default-directory
将其设置为像remote-machine:/etc/apache2
SSH到另一台计算机时一样。使用 ssh-el时,您可以运行ssh-directory-tracking-mode
以使其工作。例如,如果我运行M-x ssh
,cd到 /etc/apache2
,然后运行C-x C-f
,则看到的提示是:
Find Files or Url: /scp:aardvark@remote-machine:/etc/apache2
您可以手动运行“ Mx ssh-directory-tracking-mode”,但将其设置为ssh-mode的钩子更为方便:
(setq ssh-mode-hook 'ssh-directory-tracking-mode)
更多信息:
dirtrack-mode
吗?它有一个挂钩,可以做您想要的。