2

В течение долгого времени я использовал предоставленные ответы для Resume Zsh-Terminal (OS X Lion), чтобы установить значок прокси для Terminal.app при работе в zsh , и до сих пор он работал довольно хорошо. Однако недавно я заметил, что при работе в zsh под screen zsh больше не может обновлять Terminal.app о текущем рабочем каталоге.

После поиска вокруг, кажется, что screen принимает различные escape-последовательности (или что-то в этом роде) для того, чтобы установить свои заголовки, и, кажется, существует некоторое недопонимание между screen и xterm , но в целом, я не смог найти решение, чтобы решить эту проблему.

Я добавил следующую строку в мой файл .screenrc , но безрезультатно:

termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

Я видел много разных «решений», но ни одно из них специально для поддержки этого - какая-нибудь помощь?


Чтобы уточнить, согласно комментариям Криса ниже: ранее я использовал следующую строку для обновления терминала:

printf '\e]7;%s\a' "${PWD// /%20}"

Это не работает под экраном, из-за того, как работает printf , или из-за используемых escape-последовательностей.

1 ответ1

0

Закончилось решением моей собственной проблемы. Я добавил zsh hook в chpwd со следующим кодом:

# Update Terminal about the current working directory.
if [[ "$TERM_PROGRAM" = "Apple_Terminal" ]]; then
    update_terminal_pwd() {
        echo -n "<ESC>]0;${$(pwd -P)//\/Users\/itaiferber/~}/"
    }

    autoload add-zsh-hook
    add-zsh-hook chpwd update_terminal_pwd
    update_terminal_pwd
fi

Это обновляет заголовок окна терминала до текущего рабочего каталога (показывает сокращенный путь вместо полного пути к файлу, следуя символическим ссылкам), а также значок прокси-документа.

Для пояснения, это необходимо использовать со строкой, упомянутой в вопросе в .screenrc - она не работает прямо из коробки.


Опять же, в соответствии с комментариями Криса, я хочу прояснить: просто кажется, что этот ответ предлагает правильные escape-последовательности для запуска обновления заголовка терминала. Я предполагаю, что с этой конфигурацией, screen теперь может корректно обновлять заголовок терминала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .