Я устанавливаю значимые имена для новых окон, которые я создаю на экране gnu, но затем, когда я «cd» или открываю vim, это имя меняется, например, на «pwd». Есть ли способ предотвратить изменение названия на экране? Я знаю, что в tmux есть такая настройка, но по какой-то причине прокрутка vim очень медленно работает в tmux с несколькими вертикальными разбиениями, поэтому мне пришлось отказаться от нее (tmux). Идеи приветствуются!
5 ответов
На экране GNU, по-видимому, нет способа отключить эту функцию (и в любом случае вы будете применять ее выборочно). Способ исправить это - изменить поведение shell и vim:
- оболочка bash обычно делает это в специальной переменной
PROMPT_COMMAND
. XTerm Title How-To содержит общую информацию по этой теме. Задать заголовок окна терминала для текущего вопроса каталога также содержит полезную информацию. - vim делает это, используя режим / настройку
title
. Если выset notitle
в вашем.vimrc
этого должно быть достаточно.
Строка в /etc /screenrc, которая была проблемой для меня, была
строка с жестким статусом "[screen% n%?:% t%?] %час"
Как только это было идентифицировано, мне не нужно было редактировать системный файл. Я мог бы работать вокруг экрана, изменяя заголовок с
CTRL-A: хардстатус всегда
для текущего окна или добавив следующее в мой ~/.screenrc для будущих окон:
хардстатус всегда
(Я установил вкладку и заголовки окна моего терминала в моей подсказке bash, чтобы включить полезную информацию, и экран мне не помог.)
В 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 всегда игнорировал для меня
О каких "окнах" ты говоришь?
Экран и, возможно, оболочка и vim отправляют коды выхода из терминалов для этих целей. Некоторые терминальные эмуляторы не очень хорошо ловят их всех и, по сути, пойдут на убыль. Но прошло много времени с тех пор, как я это видел.
С помощью экрана вы можете установить заголовок окна с title <title>
и установить его программно (привязав к ключам или специальным последовательностям ESC), как вам угодно. В конечном итоге эти программы передают последовательность на ваш терминал. Вы можете использовать переменную среды PROMPT_COMMAND
чтобы динамически изменить это в зависимости, например, от вашего cwd. Вот мой, который, очевидно, установлен моей системой /etc /bashrc
printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
Чтобы название полностью исчезло, вы должны сделать (как минимум) три вещи:
- закройте все окна, кроме 1, и сбросьте PROMPT_COMMAND в командной строке и в вашем
~/.profile
после загрузки/etc/bashrc
. - Используйте команду
title
экрана. НажмитеCtrl-A
затем:
затемtitle ""<CR>
. Вы также можете установить это в.screenrc
. Отправьте пустую последовательность из оболочки:
printf "\033]0;\033\\"
Если что-то еще (например, vim
) устанавливает это, нам нужно провести дальнейшее исследование.
На странице man экрана есть раздел TITLES, в котором они подробно обсуждают это.
В связи с этим я обнаружил, что после установки заголовка моего окна (и обеспечения того, что PROMPT_COMMAND не был установлен и что в моем PS1 не было ничего плохого), запуск экрана в некоторых системах приведет к изменению заголовка моего окна. После многих экспериментов и разочарований я, наконец, обнаружил, что, взяв установленный файл пакета экрана /etc /screenrc из системы, в которой не было этой проблемы, и использовав ее для замены того же файла в системе, в которой возникла проблема, он исправил мой вопрос. Экран больше не меняет заголовок моего окна. Теперь точно, какие строки или строки в /etc /screenrc делают, я не знаю. Разница между двумя экранами огромна, и поэтому я даже не пытался ее расклеить.