2011-12-22 12 views
35

Recentemente sono passato a iTerm2 e lo adoro. Mi chiedo però se esiste un modo per utilizzare i profili per corrispondere a quale ambiente/macchina specifica si è su.Profili iTerm 2

Dire se eseguo attività in una finestra del mio Mac, il profilo viene visualizzato come predefinito, ma se eseguo ssh su una macchina (diciamo dev0), il profilo su iTerm si aggiornerà al profilo dev0. Una volta che ho finito con dev0 e chiamo exit, il profilo passerà nuovamente al default.

Mi rendo conto che è necessario aprire un profilo specifico ogni volta che si desidera eseguire l'ssh su un'altra macchina e avere un modo per distinguerlo, ma se la connessione è chiusa, è necessario notare il testo in base al testo piuttosto che dire lo sfondo della finestra.

È possibile? In caso contrario, come è possibile aggiungere questa funzionalità e c'è un modo in cui posso contribuire?

+0

È una buona domanda, ma non sono sicuro se questo appartiene a StackOverflow. – sosborn

+0

hai ragione Ho appena aderito alla community, c'è un modo per spostarlo in SuperUser? –

+3

C'è almeno una domanda su SuperUser che fa riferimento a questa domanda nei commenti :) http://superuser.com/questions/1052305/mac-osx-terminal-change-background-color-on-login-to-different- server? noredirect = 1 # comment1475057_1052305 –

risposta

48

iTerm2 supporta un codice di escape personalizzato che modifica il profilo al volo. Inseriscilo nel tuo .bashrc o .bash_profile.

<esc>]50;SetProfile=X^G 

dove X è il profilo. Per esempio, per cambiare il profilo di uno chiamato "Pippo", noi questo script di shell:

#!/bin/bash 
echo -e "\033]50;SetProfile=Foo\a" 

di cambiare di nuovo quando si disconnette, inserire il codice per modificare il profilo di nuovo a default in ~/.bash_logout.

+0

Solo un problema con questo per chiunque altro legga questo: se si finisce per annidare le sessioni ssh, sarà necessario ri-source (. ~/.bashrc) dopo aver effettuato il logout dal secondo ssh nel tuo primo Normalmente non lo farei ma devo farlo se sto lavorando in remoto. –

+0

È possibile impostare il profilo predefinito come questo? Ho provato 'SetDefaultProfile', ma non ha funzionato. –

+0

Ho appena trovato questo elenco di codici di escape, interessante - SetProfile non è elencato .. Mi chiedo che altro è nascosto lì dentro .. http://www.iterm2.com/#/section/documentation/escape_codes –

0

Ho avuto questo stesso desiderio e ho trovato che questo può essere realizzato in iTerm 2 (Build 1.0.0.20130319) nelle preferenze dell'applicazione.

È possibile assegnare un profilo (diciamo un profilo remoto) con un preset diverso da quello predefinito preimpostato andando a:

Profili -> profili aperti selezionare il profilo e fare clic su Modifica profili ... Vai la scheda Colori e scegli un predefinito per questo profilo dall'elenco in Carica preimpostazioni ...

Inoltre, ho impostato il tasto di scelta rapida per diversi profili in modo da avere una finestra di iTerm diversa da un'altra finestra. Ho fatto questo:

  1. Creazione di un nuovo un profilo in Preferenze
  2. Creazione di una nuova chiave di scelta rapida profilo in Preferenze> Tasti la cui azione è nuova finestra con profilo

mio profilo di default ha un sfondo nero ma a volte mi aiuta ad avere uno sfondo bianco. Duplo il mio profilo predefinito e nome il nuovo profilo DefaultLight. Sul mio profilo predefinito vado alla scheda Chiavi in ​​cui creo un nuovo tasto di scelta rapida profilo la cui scorciatoia da tastiera è^+ cmd + n, la cui azione è Nuova finestra con profilo e il cui profilo è DefaultLight.

Dopo aver salvato le prefrenze, cmd + n apre una nuova finestra con uno sfondo nero e^+ cmd + n apre una nuova finestra con uno sfondo bianco.

C'è anche una Nuova scheda con l'azione Profilo nella Tastiera Tasti di scelta rapida Preferenza se sei interessato a farlo ancora più lontano.

6

per gli utenti zsh

Diciamo che avere 2 profili, uno chiamato mac (per la vostra macchina primaria) e una per linux (la macchina remota)

quando si entra in sessione, dobbiamo dire a zsh di caricare il nostro profilo

  1. connettersi al remoto linux
  2. in ~/.zshrc aggiungere echo -e "\033]50;SetProfile=linux\a"
  3. fonte dei file per ottenere un effetto immediato: source ~/.zshrc
  4. vostro nuovo tema dovrebbe essere visibile all'interno della sessione iterm.

quando si esce la sessione, abbiamo bisogno di dire zsh per tornare al nostro profilo originale

  1. connettersi a Linux remoto
  2. in linux ~/.zlogout aggiungere il seguente
if [ "$SHLVL" = 1 ]; then 
    echo -e "\033]50;SetProfile=mac\a" 
    clear 
fi 

ora è possibile scambiare i profili con facilità < 3.

se si utilizza bash, credo che i passaggi sono simili, ma si sarebbero invece modificare ~/.bashrc e ~/.bash_logout

demo

demo of session based profiles in iterm2

10

L'ultima iTerm2 notte (Build 2.9.20150329- ogni notte al momento della scrittura) ti permette di farlo facilmente. È possibile scaricarlo here.

Una volta installato e lo aprì:

  1. Accedi al tuo computer remoto via ssh e sceglie iTerm2 (il menu delle applicazioni)>Installare Shell Integrazione. Scaricherà uno script con curl e lo installerà. Fai lo stesso sul tuo computer locale.
  2. Vai a Preferenze>Profili.
  3. Creare un nuovo profilo per la macchina locale. Personalizzalo in base alle tue esigenze (cambia colore di sfondo, nome, ecc.)
  4. Vai alla scheda avanzata e scorri verso il basso.
  5. In Cambio profilo automatico, fare clic su "+" e aggiungere il nome host del computer locale.Il nome host è quello che si ottiene quando si esegue echo $HOST sul computer di destinazione. Non è sempre quello che vedi nel prompt.
  6. Creare un altro profilo, questa volta per il computer remoto e personalizzarlo.
  7. Aggiungere il nome host della macchina remota in Cambio automatico profilo.
  8. Ora, se si esegue l'ssh nel computer remoto, il profilo cambierà e se si exit della sessione ssh, si tornerà al proprio profilo locale.

È possibile combinare questa soluzione con @esod's answer senza problemi.
Nota: non ha funzionato per me finché non ho creato un profilo specifico per il desktop invece di utilizzare il profilo predefinito.

Vedere the documentation per ulteriori informazioni.

+1

Risposta eccellente, molto concisa . Poiché il mio computer è un computer di lavoro, sotto l'opzione ~ Cambio automatico profilo ~, ho scelto di utilizzare @myusername rispetto al nome host perché "echo $ HOST era vuoto", era un computer di lavoro e non volevo modifica il mio nome host. –

0

Nel mio caso, ho bisogno di combinare Yohaï Berreby's answer con le impostazioni dei miei ospiti per implementare questa funzione.

  1. In commutazione automatica del profilo, clicca su '+' e aggiungere il nome host della macchina locale. Il nome host è quello che si ottiene quando si esegue echo $ HOST sul computer di destinazione. Non è sempre quello che vedi nel tuo prompt.

mio server di gestione temporanea non imposta $ HOST e il nome host è:

[[email protected] ~]$ hostname 
alveo-staging 

Ma non può impostare la regola con il nome host come alveo-staging. Perché infatti alveo-staging è solo un alias del nome host reale (alveo-staging.xxx), che può essere impostato in /etc/hosts.

Quindi la soluzione rapida a questo è usare * caratteri jolly, per impostare la regola come *staging*.

Quindi funziona.