Если я использую консоль или другой терминал, имя тега терминала может изменяться на основе PWD. Но в многорежимном состоянии имя буфера *terminal<number>*
. Это не очень приятно. Потому что, когда я переключаюсь между ними, имя не очень информативно. Поэтому я хочу переименовать его на основе PWD.Обновление многоуровневого имени буфера на основе PWD
Я считаю, что Введите ключ будет связываться с термином-отправить-сырец, так что я пишу функцию
(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
терминального буфера, в то время как он а не PWD
SHELL
в этом терминале.
Оконечный буфер PWD
установлен на defcustom multi-term-default-dir
. И это не изменяется, когда PWD
изменяется на SHELL
.
(defcustom multi-term-default-dir "~/"
"The default directory for terms if current directory doesn't exist."
:type 'string
:group 'multi-term)
Как я могу получить PWD SHELL в терминале?
С уважением.
Хороший метод. Я попробовал второй вариант, это немного сложно. Большое спасибо. :-) – louxiu
Функция совета отлично работает при привязке к 'term-send-raw' (который отправляется при нажатии Enter в режиме char). Единственный недостаток заключается в том, что после нажатия Enter, 'update-current-directory' запускается до того, как оболочка получит шанс фактически изменить каталоги. Обходной путь - нажать Enter дважды. –