在 iTerm2 中增加/减少字体大小

在 iTerm2 中增加/减少字体大小

问题: 我在旅途中使用笔记本电脑,在办公室时连接外接显示器。由于外接显示器很大,我需要增加现有iTerm2窗口(通常是一个)和所有选项卡中的字体。
解决方法:Cmd-+我将窗口内打开的每个选项卡(通常只有一个)的 字体放大 2-4 倍(通过按)。

问题:有没有一种简单的方法可以实现自动化增大/减小字体大小适用于当前窗口的所有选项卡?或者,如果我要创建两个单独的配置文件,我是否可以轻松地将某个配置文件应用于窗口中所有当前打开的选项卡?

答案1

有一种非常糟糕且有缺陷的方法可以自动化实现这一目标,但我无论如何都会发布它。

您可以在 iTerm2 的首选项(配置文件窗格)中创建一个新配置文件。我们将其命名为“LargeFont”。您可以通过按以下方式从默认配置文件中克隆它⌘=

设置您希望它在新创建的配置文件的文本窗格中显示的字体大小。

现在这里有个窍门。您无法使用 AppleScript 更改字体大小或终端会话的配置文件(至少我还没有找到方法),但您可以使用 AppleScript 在每个会话中执行命令,并且 iTerm2 中有一个自定义转义序列,支持更改其所在会话的配置文件echo

因此,你可以执行:

echo -e "\033]50;SetProfile=LargeFont\a"

在每个打开的会话中将终端的配置文件更改为“LargeText”。

现在我们可以使用 AppleScript 自动执行所有打开的会话:

tell application "iTerm"
    repeat with theTerminal in terminals
        tell theTerminal
            repeat with theSession in sessions
                tell theSession
                    write text "echo -e '\\033]50;SetProfile=LargeText\\a'"
                end tell
            end repeat
        end tell
    end repeat
end tell

请注意,它只是将文本(逐字逐句)写入每个会话,因此如果您在某个选项卡中打开了某个文本编辑器 - 它将无法在其中工作,而是会将 echo 命令粘贴到您的代码/配置文件中。如果您在某个选项卡中运行 ping 命令 - 它也无法工作。
您应该确保您的任何 shell 中都没有运行交互式程序。

这些命令还会留在 shell 的历史记录中。你可以在命令本身前添加一个空格来绕过它(例如echo -e ...),这至少在 zsh 中有效。

这是 zsh 函数:

function iterm_change_profile() {
    osascript -e "
        tell application \"iTerm\"
            repeat with theTerminal in terminals
                tell theTerminal
                    repeat with theSession in sessions
                        tell theSession
                            write text \" echo -e \\\"\\\\033]50;SetProfile=$1\\\\a\\\"\"
                        end tell
                    end repeat
                end tell
            end repeat
        end tell"
}

因此你可以像这样使用它:

iterm_change_profile LargeFont

还有一个缺点——当您将配置文件从较大字体更改为较小字体时,iTerm 的窗口大小会发生显著调整。

但是,这又是一个非常糟糕的方法。

答案2

在当前的 iTerm2(版本 3.3.7)中,有看法>尺寸变化 更新资料解决了这个问题:

要更改字体大小(无论配置文件如何),请参阅这个 iTerm2 问题其中提供了脚本。

答案3

对于 iTerm2 版本,版本 - 3.4.17 您可以使用快捷方式++

或者你可以去

查看 -> 放大文本

答案4

我不得不稍微改变一下 Igor 的解决方案;不知道为什么。以下是对我有用的方法:

function iterm_change_profile() {
    osascript -e "
        tell application \"iTerm2\"
          tell current window
            repeat with aTab in tabs
                tell aTab
                    repeat with theSession in sessions
                        tell theSession
                            write text \" echo -e \\\"\\\\033]50;SetProfile=$1\\\\a\\\"\"
                        end tell
                    end repeat
                end tell
            end repeat
        end tell
      end tell"
}

相关内容