iTerm 2 profiles

前端 未结 7 1713
庸人自扰
庸人自扰 2021-01-29 23:10

I have recently switched over to iTerm2 and love it. I am wondering though if there is a way to use profiles to correspond to what environment/specific machine you are on.

相关标签:
7条回答
  • 2021-01-29 23:30

    The latest iTerm2 nightly (Build 2.9.20150329-nightly at the time of writing) allows you to do that easily. You can download it here.

    Once you've installed and opened it:

    1. Log in to your remote machine via ssh and click iTerm2 (the app menu) > Install Shell Integration. It will download a script with curl and install it. Do the same on your local machine.
    2. Go to Preferences > Profiles.
    3. Create a new profile for your local machine. Customize it to fit your needs (change background color, name, etc)
    4. Go to the Advanced tab and scroll to the bottom.
    5. In Automatic Profile Switching, click '+' and add the hostname of your local machine. The hostname is the one you get when running echo $HOST on the target machine. It is not always the one you see in your prompt.
    6. Create another profile, this time for your remote machine, and customize it.
    7. Add the hostname of the remote machine in Automatic Profile Switching.
    8. Now, if you ssh into the remote machine, your profile will change, and if you exit out of the ssh session, you will be back to your local profile.

    You can combine this solution with @esod's answer seamlessly.
    Note: it didn't work for me until I created a profile specifically for the desktop instead of using the default profile.

    See the documentation for more info.

    0 讨论(0)
  • 2021-01-29 23:30

    I had this same wish and found this can be accomplished in iTerm 2 (Build 1.0.0.20130319) in the application's preferences.

    You can assign a profile (say a remote profile) with a different preset than your default preset by going to:

    Profiles -> Open Profiles select the profile and click Edit Profiles... Go to the Colors Tab and choose a preset for this profile from the list in Load Presets...

    Further, I've set up Keys shortcut for different profiles so I can have one iTerm window look different than another window. I did this by:

    1. Creating a new a Profile in Preferences
    2. Creating a new Profile Shortcut Key in Preferences-> Keys whose action is New Window with Profile

    My Default profile has a black background but sometimes it helps me to have a white background. I duplicate my Default profile and name the new profile DefaultLight. On my Default profile I go to the Keys tab where I create a new Profile Shortcut Key whose Keyboard Shortcut is ^+cmd+n, whose action is New Window with Profile, and whose Profile is DefaultLight.

    After saving the prefrences, cmd+n opens a new window with a black background and ^+cmd+n opens a new window with a white background.

    There's also a New Tab with Profile action in the Keyboard Shortcut Keys Preference if you're interested in taking this even further.

    0 讨论(0)
  • 2021-01-29 23:34

    step 1:

    custom your iterm profile, e.g. dark, light

    step 2:

    add code before to your shell profile, e.g .bashrc or .zshrc

    # Change iterm2 profile. Usage it2prof ProfileName (case sensitive)
    it2prof() { echo -e "\033]50;SetProfile=$1\a" }
    

    step 3:

    make sense your profile

    exec $SHELL -l
    

    step 4:

    toggle your iterm theme profile

    it2prof dark
    it2prof light
    
    0 讨论(0)
  • 2021-01-29 23:36

    In my case, I need to combine Yohaï Berreby's answer with my hosts' setting to implement this feature.

    1. In Automatic Profile Switching, click '+' and add the hostname of your local machine. The hostname is the one you get when running echo $HOST on the target machine. It is not always the one you see in your prompt.

    My staging server doesn't set $HOST and host name is :

    [devel@alveo-staging ~]$ hostname
    alveo-staging
    

    But I can't set the rule with hostname as alveo-staging. Because in fact alveo-staging is just an alias of the real hostname (alveo-staging.xxx), which can be set in /etc/hosts.

    So the quick solution to this is to use * wildcards, to set the rule as *staging*.

    Then it works.

    0 讨论(0)
  • 2021-01-29 23:36

    For Fishell user: 1. Create a fish function:

    functions it2prof > ~/.config/fish/functions/it2prof.fish

    1. Add this content to ~/.config/fish/functions/it2prof.fish file and save:
    function it2prof
      echo -e "\033]50;SetProfile=$argv\a"
    end
    
    1. enjoy your command:

    it2prof whatever_profile_you_define

    0 讨论(0)
  • 2021-01-29 23:41

    iTerm2 supports a custom escape code that changes the profile on the fly. Put it in your .bashrc or .bash_profile.

    <esc>]50;SetProfile=X^G
    

    where X is the profile. For instance, to change the profile to one called "Foo", us this shell script:

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

    To change it back when you log out, put code to change the profile back to default in ~/.bash_logout.

    0 讨论(0)
提交回复
热议问题