【发布时间】:2012-12-01 02:28:54
【问题描述】:
如果我使用 konsole 或其他终端,终端标签名称可以根据 PWD 更改。但在多术语中,缓冲区名称为*terminal<number>*。这不是很好。因为当我在它们之间切换时,名称不是很丰富。所以我想根据 PWD 重命名它。
我发现Enter键绑定到term-send-raw,所以我写了一个函数
(defadvice term-send-raw (around rename-term-name activate)
(progn
(rename-buffer
(concat "⇒ "
(shell-command-to-string "pwd | xargs basename | tr -d '\n'")
(format-time-string " [%M ∞ %S]")))
ad-do-it))
但问题是pwd 命令返回终端缓冲区的PWD,而不是该终端中SHELL 的PWD。
终端缓冲区的PWD 由defcustom multi-term-default-dir 设置。当SHELL 中的PWD 更改时,它不会更改。
(defcustom multi-term-default-dir "~/"
"The default directory for terms if current directory doesn't exist."
:type 'string
:group 'multi-term)
如何在终端中获取 SHELL 的 PWD?
问候。
【问题讨论】: