Questão Com Bash + iTerm2, como nomear as abas?


No iTerm2 (Build 1.0.0.20120203), eu normalmente abro várias abas, cada uma das quais tem painéis divididos, e é sobre um tema particular de trabalho, por exemplo controle de revisão, codificação, gerenciamento de arquivos, trabalho de terminal mysql. Eu normalmente preciso alternar entre 5 ou mais guias no meu fluxo de trabalho. Às vezes é difícil lembrar ou dizer qual é qual, olhando para o conteúdo da tela. Eu gostaria de nomear as abas de alguma forma, para que eu possa dizer rapidamente qual é qual, olhando rapidamente. Isso é possível?


152


origem


possível duplicata de Alterar títulos de janelas e abas do iTerm2 em zsh - Daniel Beck♦
Não totalmente duplicado. Então, como adicionar o aplicativo atualmente em execução como parte do título da guia? Ou seja qual guia está executando o emacs, mysql, etc.? - qazwsx
Ou seja todas as minhas guias têm o mesmo host e usuário. Então, usá-los não vai diferenciar minhas abas. - qazwsx
Você quer dizer que você quer Mostrar nome do trabalho atual das preferências do iTerm? Observe que o tópico vinculado não é sobre nome de usuário ou host. - Daniel Beck♦
Certo, quero mostrar alguma indicação de qual programa está sendo executado ou foi executado em cada guia. Além disso, a solução dada no outro post não funciona para Bash + iTerm2. - qazwsx


Respostas:


Como você está usando o iterm2 em um mac, outra opção é que você pode simplesmente pressionar Cmd-I, digitar algo e clicar em Escape.

A solução do terminal é um pouco mais rápida do que isso, mas só queria que você soubesse.


182



Isso funciona por um segundo até eu emitir um retorno na guia que renomei. - Stewie
@Stewie Em Preferências -> Perfis -> Terminal, desmarque a opção "Permitir que o terminal informe o título da janela". - Max Cantor
Está desmarcado. Ainda renomeia o título. - Stewie
@SteveBennett não é o "tema" (na verdade, o termo é "perfil") em si; o comando CMD + I é "Editar sessão atual ..." (no menu Exibir), portanto, apenas altera a instância da guia do perfil. Hitting Escape apenas fecha a janela, o que é necessário, uma vez que a janela não tem um botão "salvar". - MidnightLightning
E se você tiver vários painéis abertos? Você precisa renomear cada um para nomear completamente a própria guia? - theicfire


Eu encontrei a seguinte função, colocada no meu ~/.bashrc ser útil:

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

Então eu posso chamá-lo do meu prompt bash da seguinte forma:

> title I want a pony!

E minha guia recebe o título de acordo.


105



Eu tentei isso, mas ainda não funciona. Eu coloquei esta definição em bash_aliasese carregá-lo .profile (if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi) Mas então title dog não transformou o título da guia em "cachorro" - qazwsx
+1 - Eu adicionei o meu ao / etc / profile porque é onde meus aliases estão ... não se esqueça de buscar o arquivo depois que você terminar. Nota: isso também funciona no terminal. - blak3r
Muito útil. Eu queria um pônei; e eu tenho um! - SoEzPz
Eu coloquei o meu em .bash_profile, reiniciei e funcionou como um encanto. - C Johnson
funciona para zsh também - Sagar Jauhari


execute este comando para definir o título da sua aba ou janela:

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

Eu adicionei o seguinte ao meu ~/.bash_profile para sempre listar o diretório atual relativo ao meu diretório inicial:

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

útil quando você tem 100 terminais minimizados em sua doca

dica de chapéu para o mundo mac


40



Trabalho! Apenas tenha em mente que tanto .bashrc quanto .bash_profiles podem ser carregados e não ambos juntos. Eu já tinha um arquivo .bash_profiles então tive que colá-lo neste arquivo. Obrigado. - therealmarv
oh obrigada! Atualizei a resposta para corresponder a isso. Eu tenho "source ~ / .bashrc" no meu .bash_profile e esqueço que isso não é comum - schpet


Adicione esta função ao seu ~/.bash_profile arquivo e deve funcionar.

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

15





Eu usei soluções semelhantes às anteriores por um bom tempo, mas uso abas suficientes para que eu também as queira codificadas por cores para facilitar a referência visual. Então eu agitei tabset, um utilitário para definir o título, o selo e a cor da guia com base no tipo de trabalho que estou fazendo em cada guia.

example

Isso requer , mas agora é uma plataforma comumente instalada. Para instalar:

npm install -g iterm2-tab-set

11



Isso é incrível! Eu particularmente adoro a configuração automática da cor da guia. Obrigado! - Ashutosh Jindal


Eu gosto deste:

#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

Ele permitirá que você alterne o nome de uma guia entre um nome personalizado e um padrão do seu CWD.

title -> o título da sua guia será ~/YOUR_CWD/

title hey there -> o título da sua guia será hey there


6



Note que, como é, isso vai colidir Integração de shell iTerm. - Michael


Eu realmente gosto taylorstine's answer, mas quebra o iTerm2 integração shell que depende do PROMPT_COMMAND variável. Você pode modificar o código de Taylor para corrigir isso, adicionando o __bp_precmd_invoke_cmd de volta para o PROMPT_COMMAND toda vez que você mexer com isso:

# 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