экран GNU, чтобы не изменять заголовки моего окна

3049
Anton Pegushin

Я устанавливаю значимые имена для новых окон, которые я создаю на экране gnu, но затем, когда я «cd» или открываю vim, это имя изменяется, например, на «pwd». Есть ли способ предотвратить изменение названия на экране? Я знаю, что в tmux есть такая настройка, но по какой-то причине прокрутка vim очень медленно работает в tmux с несколькими вертикальными разбиениями, поэтому мне пришлось отказаться от нее (tmux). Идеи приветствуются!

5

5 ответов на вопрос

3
Thomas Dickey

На экране GNU, по-видимому, нет способа отключить эту функцию (и в любом случае вы будете применять ее выборочно). Способ исправить это - изменить поведение shell и vim:

1
Otheus

О каких "окнах" ты говоришь?

Экран и, возможно, оболочка и vim отправляют коды выхода из терминалов для этих целей. Некоторые эмуляторы терминалов не очень хорошо ловят их всех и, по сути, пойдут на убыль. Но прошло много времени с тех пор, как я это видел.

С помощью экрана вы можете установить заголовок окна title <title>и установить его программно (привязав к клавишам или специальным последовательностям ESC), как вам угодно. В конечном итоге эти программы передают последовательность на ваш терминал. Вы можете использовать PROMPT_COMMANDпеременную окружения, чтобы динамически изменить это в зависимости, например, от вашего cwd. Вот мой, который, очевидно, установлен моей системой / etc / bashrc

printf "\033]0;%s@%s:%s\033\\" "$" "$" "$" 

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

  1. закрыть все, кроме 1 экрана и сбросить PROMPT_COMMAND в командной строке и ~/.profileпосле /etc/bashrcзагрузки.
  2. Используйте titleкоманду экрана . Хит Ctrl-Aтогда :тогда title ""<CR>. Вы можете установить это .screenrcтакже.
  3. Отправьте пустую последовательность из оболочки:

    printf "\033]0;\033\\" 

Если что-то еще (например vim) устанавливает это, нам нужно провести дальнейшее исследование.

На странице man экрана есть раздел TITLES, в котором они подробно обсуждают это.

1
guest_screener

В связи с этим я обнаружил, что после установки заголовка моего окна (и обеспечения того, что PROMPT_COMMAND не был установлен и что в моем PS1 не было ничего плохого), запуск экрана в некоторых системах приведет к изменению заголовка моего окна. После многих экспериментов и разочарований я, наконец, обнаружил, что, взяв установленный файл пакета экрана / etc / screenrc из системы, в которой не было этой проблемы, и использовав ее для замены того же файла в системе, в которой возникла проблема, он исправил мой вопрос. Экран больше не меняет заголовок моего окна. Теперь точно, какие строки или строки в / etc / screenrc делают, я не знаю. Разница между двумя экранами огромна, и поэтому я даже не стал пытаться ее раскрутить.

1
W Dean Stanton

Строка в / etc / screenrc, которая была проблемой для меня, была

строка с жестким статусом "[screen% n% ?:% t%?]% h"

Как только это было идентифицировано, мне не нужно было редактировать системный файл. Я мог бы работать вокруг экрана, изменяя заголовок с

CTRL-A: хардстатус всегда

для текущего окна или добавив следующее в мой ~ / .screenrc для будущих окон:

хардстатус всегда

(Я установил вкладку и заголовки окна моего терминала в моей подсказке bash, чтобы включить полезную информацию, и экран мне не помог.)

1
math

В Centos это исправляется созданием / etc / sysconfig / bash-prompt-screen, который выполняется по умолчанию / etc / bashrc. если ты

touch /etc/sysconfig/bash-prompt-screen chmod +x /etc/sysconfig/bash-prompt-screen exec bash 

затем он выполнится, что ничего не делает (так как он пустой), и оставит ваши заголовки окон в покое. (Обратите внимание на exec bash, чтобы перезапустить bash и запустить его в текущей оболочке.)

hardstatus всегда игнорировал для меня

Похожие вопросы