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

van*_*van 42 fonts iterm2 macos

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

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

Igo*_*ist 37

有一个非常糟糕和错误的方式来自动化这个,但我还是会发布它。

您可以在 iTerm2 的首选项(配置文件窗格)中创建新配置文件。我们称之为“大字体”。您可以通过按?=从默认的克隆它。

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

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

所以,你可以执行:

echo -e "\033]50;SetProfile=LargeFont\a"
Run Code Online (Sandbox Code Playgroud)

在每个打开的会话中将终端的配置文件更改为“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
Run Code Online (Sandbox Code Playgroud)

请注意,它只是将文本(字面意思)写入每个会话中,因此如果您在其中一个选项卡中打开了一些文本编辑器 - 它不会在其中工作,并且会将 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"
}
Run Code Online (Sandbox Code Playgroud)

所以你可以这样使用它:

iterm_change_profile LargeFont
Run Code Online (Sandbox Code Playgroud)

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

但是,再一次,这是一种非常糟糕的方式。


Bor*_*ard 10

在当前的 iTerm2(版本 3.3.7)中,有View > Size Changes Update Profile可以解决这个问题:

要更改字体大小而不考虑配置文件,请参阅提供脚本的iTerm2 问题