5

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

5 ответов5

3

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

1

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

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

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

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

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

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

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

1

В 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 всегда игнорировал для меня

1

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

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

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

printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

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

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

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

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

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

1

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

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