2011-12-22 43 views
35

我最近切换到iTerm2,喜欢它。我想知道,如果有一种方法来使用配置文件来对应你所在的环境/特定机器。的iTerm 2型材

说如果我在我的Mac上的一个窗口中执行任务,配置文件显示为默认配置文件,但是如果我ssh进入一台机器(可以说dev0),则iTerm上的配置文件将更新为配置文件dev0。一旦我完成dev0并呼叫退出,配置文件将再次切换到默认值。

我意识到一个解决办法是打开一个特定的配置文件,每当我想ssh到另一台机器,并有一种方法来区分,但如果连接关闭它需要你注意基于文本而不是说背景的窗户。

这可能吗?如果不是这个功能怎么可能被添加,并且有我能贡献的方法吗?

+0

这是一个很好的问题,但我不确定这是否属于Stackoverflow。 – sosborn 2011-12-22 00:23:37

+0

你是对的我刚加入社区,有没有办法将此移至SuperUser? – 2011-12-23 20:38:01

+3

至少有一个关于SuperUser的问题在评论中引用了这个问题:) http://superuser.com/questions/1052305/mac-osx-terminal-change-background-color-on-login-to-different-服务器?noredirect = 1#comment1475057_1052305 – 2016-03-13 17:12:53

回答

48

iTerm2支持改变在运行的配置文件自定义的转义码。把它放在你的.bashrc或.bash_profile中。

<esc>]50;SetProfile=X^G 

其中X是轮廓。举例来说,在外形变成一个所谓的“富”,我们这个shell脚本:

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

要把它改回来,当你注销,将代码更改情景回默认的〜/ .bash_logout中。

+0

对于读这个的人来说,这只是一个问题:如果你最终嵌套你的ssh会话,你必须在退出第二个ssh之后重新提交(。〜/ .bashrc)进入你的第一个。我通常不会这样做,但必须如果我正在远程工作。 – 2012-01-04 22:56:00

+0

是否可以像这样设置默认配置文件?我尝试了'SetDefaultProfile',但那不起作用。 – 2013-01-29 02:24:13

+0

刚刚发现这个转义代码列表,有趣的是 - SetProfile没有列出..我不知道还有什么隐藏在那里.. http://www.iterm2.com/#/section/documentation/escape_codes – 2013-05-17 16:15:23

0

我在应用程序的喜好有同样的愿望,并发现这可以在2的iTerm来完成(建设1.0.0.20130319)。

您可以用不同的预设比默认转到预设指定配置文件(比如远程配置文件):

配置文件 - >打开配置文件 选择配置文件,然后单击编辑配置文件... 转到颜色选项卡,并选择一个预设,用于从加载预设列表简介...

而且,我已经设置了快捷键为不同的配置文件,所以我可以有一个窗口的iTerm看起来比其他窗口不同。我这样做的:

  1. 创建在首
  2. 创建在首选项 - >键,其作用是新的窗口简介

我的默认配置文件有一个新的配置文件快捷键一个新的配置文件黑色的背景,但有时它可以帮助我有一个白色的背景。我复制我的默认配置文件并将其命名为新配置文件DefaultLight。在我的默认配置文件中,我转到Keys选项卡,在其中创建一个新的配置文件快捷键,其键盘快捷键是^ + cmd + n,其操作是带有配置文件的新窗口,其配置文件为DefaultLight。

保存好设置后,cmd + n打开一个黑色背景的新窗口,^ + cmd + n打开一个白色背景的新窗口。

如果您有兴趣进一步研究,还可以在键盘快捷键首选项中使用配置文件操作的新选项卡。

6

为zsh的用户

可以说你有2个配置文件,一个名为MAC(您的主机)并输入时一个Linux的(远程机)

session,我们需要告诉zsh加载我们的档案

  1. 连接到远程Linux的
  2. ~/.zshrc添加echo -e "\033]50;SetProfile=linux\a"
  3. 源文件的立竿见影的效果:source ~/.zshrc
  4. 新的主题应该是ITERM会话中可见。

退出会议的时候,我们需要告诉zsh来切换回我们原来的轮廓

  1. 连接到远程Linux
  2. 在linux ~/.zlogout添加以下
if [ "$SHLVL" = 1 ]; then 
    echo -e "\033]50;SetProfile=mac\a" 
    clear 
fi 

现在您可以轻松地交换配置文件< 3。

如果你使用bash,我相信的步骤相似,但你会,而不是修改~/.bashrc~/.bash_logout

演示

demo of session based profiles in iterm2

10

最新iTerm2夜间(建设2.9.20150329-在写作时每晚)让你轻松做到这一点。你可以下载它here

一旦你安装并打开了它:通过ssh

  1. 登录到远程计算机,然后单击iTerm2(应用程序菜单)>安装外壳集成。它将下载一个带有curl的脚本并安装它。 在您的本地机器上做同样的事情。
  2. 前往首选项>档案
  3. 为您的本地机器创建一个新的配置文件。定制它以适应您的需求(更改背景颜色,名称等)
  4. 转到高级选项卡并滚动到底部。
  5. 自动配置文件切换,单击'+'并添加本地计算机的主机名。主机名是在目标机器上运行echo $HOST时获得的主机名。 它并不总是您在提示中看到的那个。
  6. 为您的远程机器创建另一个配置文件,并对其进行自定义。
  7. 自动配置文件切换中添加远程机器的主机名。
  8. 现在,如果你ssh进入远程机器,你的配置文件将会改变,并且如果你exit出于ssh会话,你将会回到你的本地配置文件。

您可以将此解决方案无缝地与@esod's answer结合使用。
注意:直到我为桌面创建配置文件而不是使用默认配置文件之前,它才适用于我。

有关更多信息,请参见the documentation

+1

非常简洁的答案。由于我的电脑是一台工作电脑,在〜Automatic Profile Switching〜选项下,我选择使用@myusername与主机名,因为'echo $ HOST是空白的',它是一台工作电脑,我不想编辑我的主机名。 – 2016-03-13 17:53:24

0

在我的情况下,我需要结合Yohaï Berreby's answer与我的主机设置来实现此功能。

  1. 在自动配置文件切换中,单击'+'并添加本地机器的主机名。主机名是在目标机器上运行echo $ HOST时获得的主机名。它并不总是你在提示中看到的那个。

我的临时服务器没有设置$主机和主机名是:

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

但我不能设置与主机名alveo-staging规则。因为实际上alveo-staging只是真实主机名(alveo-staging.xxx)的别名,可以在/etc/hosts中设置。

因此,快速解决此问题的方法是使用*通配符将规则设置为*staging*

然后它工作。