我想要一种统一的方法来获取主目录路径。对于普通缓冲区和通过流浪汉加载的缓冲区。 我试图使comint for shell使用登录名中的历史记录文件作为缓冲区。即本地文件(如果是普通缓冲区)和远程文件(用于流浪汉缓冲区)。
(add-hook 'shell-mode-hook 'my-shell-mode-hook)
(defun my-shell-mode-hook ()
(setq comint-input-ring-file-name
(substitute-in-file-name "~/.zsh_history"))
;; Ignore timestamps in history file. Assumes that zsh
;; EXTENDED_HISTORY option is in use.
(setq comint-input-ring-separator "\n: \\([0-9]+\\):\\([0-9]+\\);")
(comint-read-input-ring t))
答案 0 :(得分:1)
使用with-parsed-tramp-file-name宏,您可以构造远程系统的文件路径。然后使用“〜”访问主文件夹。
(defun my-shell-mode-hook ()
(setq comint-input-ring-file-name
(if (file-remote-p default-directory)
(with-parsed-tramp-file-name default-directory nil
(tramp-make-tramp-file-name
(tramp-file-name-method v)
(tramp-file-name-user v)
(tramp-file-name-domain v)
(tramp-file-name-host v)
(tramp-file-name-port v)
"~/.zsh_history"))
"~/.zsh_history"))
答案 1 :(得分:0)
请注意,您可以通过仅用tramp-make-tramp-file-name
调用tramp-dissect-file-name
来简化上述操作。
(tramp-make-tramp-file-name
(tramp-dissect-file-name default-directory)
"~/.zsh_history")
使用功能文档中描述的第一种形式。