45

我最近切换到 iTerm2 并喜欢它。我想知道是否有一种方法可以使用配置文件来对应您所在的环境/特定机器。

假设我在我的 mac 上的一个窗口中执行任务,配置文件显示为默认值,但如果我 ssh 进入一台机器(比如说 dev0),iTerm 上的配置文件将更新为配置文件 dev0。完成 dev0 并调用 exit 后,配置文件将再次切换为默认值。

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

这可能吗?如果没有,如何添加此功能,有什么方法可以贡献吗?

4

7 回答 7

58

iTerm2 支持自定义转义码,可以即时更改配置文件。把它放在你的 .bashrc 或 .bash_profile 中。

<esc>]50;SetProfile=X^G

其中 X 是轮廓。例如,要将配置文件更改为名为“Foo”的配置文件,请使用以下 shell 脚本:

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

要在您注销时将其改回,请在 ~/.bash_logout 中输入代码以将配置文件更改回默认值。

于 2011-12-22T06:39:03.353 回答
15

对于 zsh 用户

假设您有 2 个配置文件,一个名为mac(用于您的主计算机)和一个用于linux(您的远程计算机)

进入会话时,我们需要告诉 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

演示

iterm2 中基于会话的配置文件演示

于 2015-01-06T23:51:04.167 回答
14

最新的 iTerm2 nightly(在撰写本文时为 Build 2.9.20150329-nightly)让您可以轻松做到这一点。你可以在这里下载。

安装并打开它后:

  1. 通过 ssh 登录到您的远程计算机,然后单击iTerm2(应用程序菜单)> Install Shell Integration。它将下载一个脚本curl并安装它。在您的本地机器上执行相同的操作
  2. 转到首选项>配置文件
  3. 为您的本地机器创建一个新的配置文件。自定义它以满足您的需求(更改背景颜色、名称等)
  4. 转到高级选项卡并滚动到底部。
  5. Automatic Profile Switching中,单击“+”并添加本地计算机的主机名。主机名是您echo $HOST在目标机器上运行时获得的主机名。它并不总是您在提示中看到的那个。
  6. 为您的远程计算机创建另一个配置文件,并对其进行自定义。
  7. 在Automatic Profile Switching中添加远程机器的主机名。
  8. 现在,如果你 ssh 进入远程机器,你的配置文件将会改变,如果你exit退出 ssh 会话,你将回到你的本地配置文件。

您可以将此解决方案与@esod 的答案无缝结合。
注意:在我专门为桌面创建配置文件而不是使用默认配置文件之前,它对我不起作用。

有关更多信息,请参阅文档

于 2015-03-29T11:44:01.540 回答
4

第1步:

自定义您的 iterm 配置文件,例如darklight

第2步:

在您的 shell 配置文件之前添加代码,例如.bashrc or .zshrc

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

第 3 步:

使您的个人资料有意义

exec $SHELL -l

第4步:

切换您的 iterm 主题配置文件

it2prof dark
it2prof light
于 2018-12-08T13:42:15.130 回答
1

我也有同样的愿望,发现这可以在应用程序首选项中的 iTerm 2 (Build 1.0.0.20130319) 中实现。

您可以通过以下步骤分配具有与默认预设不同的预设的配置文件(例如远程配置文件):

Profiles -> Open Profiles 选择配置文件并单击 Edit Profiles... 转到 Colors 选项卡并从 Load Presets... 的列表中为此配置文件选择一个预设...

此外,我为不同的配置文件设置了快捷键,这样我就可以让一个 iTerm 窗口看起来与另一个窗口不同。我这样做是:

  1. 在首选项中创建新的配置文件
  2. 在 Preferences-> Keys 中创建一个新的配置文件快捷键,其操作是带有配置文件的新窗口

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

保存首选项后,cmd+n 打开一个黑色背景的新窗口,^+cmd+n 打开一个白色背景的新窗口。

如果您有兴趣进一步了解,在键盘快捷键首选项中还有一个带有配置文件操作的新选项卡。

于 2013-04-01T13:39:49.480 回答
0

就我而言,我需要将Yohaï Berreby 的回答与我的主持人的设置相结合来实现此功能。

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

我的登台服务器没有设置 $HOST 并且主机名是:

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

但我无法将主机名设置为alveo-staging. 因为实际上alveo-staging只是真实主机名(alveo-staging.xxx)的别名,可以在/etc/hosts.

所以解决这个问题的快速方法是使用 * 通配符,将规则设置为*staging*.

然后它工作。

于 2017-10-09T08:00:27.360 回答
0

对于Fishell用户: 1. 创建功能:

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

  1. 将此内容添加到~/.config/fish/functions/it2prof.fish文件并保存:
function it2prof
  echo -e "\033]50;SetProfile=$argv\a"
end
  1. 享受你的命令:

it2prof whatever_profile_you_define

于 2019-03-30T02:06:36.013 回答