Вопрос: С Bash + iTerm2, как назвать вкладки?


В iTerm2 (Build 1.0.0.20120203) я обычно открываю несколько вкладок, каждый из которых имеет разделенные панели и относится к одной конкретной теме работы, например, к управлению версиями, кодированию, управлению файлами, работе терминала mysql. Обычно мне приходится переключаться между 5 и более вкладками в моем рабочем потоке. Иногда трудно вспомнить или сказать, что именно, глядя на содержимое экрана. Я бы назвал вкладки каким-то образом, поэтому я могу быстро сказать, что именно это, быстро взглянув. Это возможно?


151
2018-05-02 19:08


Источник


возможный дубликат Изменение заголовков iTM2 и заголовков в zsh - Daniel Beck♦
Не совсем дублируется. Итак, как добавить текущее приложение в качестве части заголовка вкладки? То есть на какой вкладке запущены emacs, mysql и т. д.? - qazwsx
То есть все мои вкладки имеют один и тот же хост и пользователь. Поэтому использование этих элементов не будет отличать мои вкладки. - qazwsx
Вы имеете в виду, что хотите Показывать текущее название работы от предпочтений iTerm? Обратите внимание, что связанная тема не относится к имени пользователя или хосту. - Daniel Beck♦
Правильно, я хочу показать некоторые указания о том, какая программа работает или запускалась на каждой вкладке. Кроме того, решение, указанное в другом сообщении, не работает для Bash + iTerm2. - qazwsx


Ответы:


Поскольку вы используете iterm2 на mac, другой вариант - вы можете просто нажать Cmd-I, набрать что-нибудь и нажать Escape.

Решение терминала немного быстрее, чем это, но просто хотел сообщить вам об этом.


182
2017-08-08 15:29



Это работает в течение секунды, пока я не выдаю возврат на вкладке, которую я переименовал. - Stewie
@Stewie In Preferences -> Профили -> Терминал, снимите флажок «Разрешить терминалу заголовок окна отчета». - Max Cantor
Он не установлен. Он по-прежнему переименовывает заголовок. - Stewie
@SteveBennett это не «тема» (на самом деле термин «профиль»); команда CMD + I - «Редактировать текущую сессию ...» (в меню «Вид»), поэтому это просто изменение экземпляра этой вкладки в профиле. Hitting Escape просто закрывает окно, которое необходимо, поскольку в этом окне нет кнопки «сохранить». - MidnightLightning
Что делать, если у вас открыто несколько панелей? Вам нужно переименовать каждый из них, чтобы полностью назвать вкладку? - theicfire


Я нашел следующую функцию, помещенную в мой ~/.bashrc быть полезным:

function title {
    echo -ne "\033]0;"$*"\007"
}

Затем я могу вызвать это из моего приглашения bash следующим образом:

> title I want a pony!

И моя вкладка получила название соответственно.


105
2018-05-23 17:57



Я пробовал это, но он все равно не работает. Я ввел это определение в bash_aliases, и загрузите его в .profile (if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi) Но потом title dog не превратил заголовок вкладки в "собаку" - qazwsx
+1 - Я добавил мой в / etc / profile, просто потому, что мои псевдонимы ... не забудьте загрузить файл после того, как вы закончите. Примечание: это также работает в терминале. - blak3r
Очень полезно. Я хотел пони; и я получил один! - SoEzPz
Я поместил мой в .bash_profile, перезапустил и работал как шарм. - C Johnson
работает и для zsh - Sagar Jauhari


выполните эту команду, чтобы установить заголовок своей вкладки или окна:

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

я добавил следующее к моему ~/.bash_profile всегда указывать текущий каталог относительно моего домашнего каталога:

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

полезно, когда у вас 100 свернутых терминалов в доке

Кончик шляпы


40
2018-03-04 00:33



Работает! Просто имейте в виду, что либо .bashrc, либо .bash_profiles могут быть загружены, а не обе вместе. У меня уже был файл .bash_profiles, поэтому мне пришлось вставить его в этот файл. Благодарю. - therealmarv
ой ну спасибо! Я обновил ответ, чтобы соответствовать этому. У меня есть «source ~ / .bashrc» в моем .bash_profile и забывают, что это не так - schpet


Добавьте эту функцию в свою ~/.bash_profile файл, и он должен работать.

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}

15
2017-10-24 03:26





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

example

Это требует узел, но теперь это обычно установленная платформа. Установить:

npm install -g iterm2-tab-set

11
2018-06-15 14:19



Это круто! Мне особенно нравится автоматическая настройка цвета вкладки. Спасибо! - Ashutosh Jindal


Мне нравится этот:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

Это позволит вам переключать имя вкладки между пользовательским именем и значением по умолчанию вашего CWD.

title -> название вашей вкладки будет ~/YOUR_CWD/

title hey there -> название вашей вкладки будет hey there


6
2017-07-26 15:29



Обратите внимание, что как есть, это будет clobber Интеграция оболочки iTerm. - Michael


мне действительно нравится ответ Тейлорстайн, но он прерывает iTerm2 интеграция оболочки который опирается на PROMPT_COMMAND переменная. Вы можете изменить код Тейлора, чтобы исправить это, добавив __bp_precmd_invoke_cmd вернуться в PROMPT_COMMAND каждый раз, когда вы возитесь с ним:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title

4
2018-03-30 14:45





мне нравится Майкл ответ.

А вдруг .iterm2_shell_integration.bash не существует?

Вот мой прием:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title

3
2018-05-23 13:21



Заметим, что в версии 3.1, iterm2_preexec_invoke_cmd стал __bp_precmd_invoke_cmd - Michael


Если вы работаете с Profiles (что очень удобно): Настройки -> Внешний вид -> Окно и вкладка Заголовки: отметьте «Показать имя профиля»:

image

Вот как это выглядит:

thumbnail linked to main image


2
2018-01-24 20:45