You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iTerm中获取当前窗口尺寸并实现粘贴当前窗口宽度到会话的动作?

如何在iTerm中获取当前窗口尺寸并实现粘贴当前窗口宽度到会话的动作?

嘿,我刚好碰到过一模一样的问题!你猜得没错,用普通shell命令确实行不通——因为它会新开一个子会话,拿到的只是iTerm默认的80列宽度,根本不是当前活跃窗口的真实尺寸。要搞定这个,必须用iTerm的原生API才行,下面给你两种简单好用的方法:

方法一:用AppleScript快速实现

这是最直接的方式,不用额外装依赖:

  • 打开iTerm,点击顶部菜单栏的iTerm2 → 偏好设置(或者直接按Cmd+,快捷键)
  • 切换到按键标签页,点击右下角的添加动作
  • 在弹出的配置窗口里,动作选择运行AppleScript,然后把下面的代码粘贴进去:
tell application "iTerm2"
    tell current window
        set windowWidth to columns of current session
        tell current session
            write text windowWidth as string
        end tell
    end tell
end tell
  • 最后给这个动作绑定一个顺手的快捷键(比如Cmd+Shift+W),点击保存就大功告成了!以后按下快捷键,当前窗口的宽度(按字符数计算)就会直接输入到当前会话里。

方法二:用iTerm2 Python API(适合复杂扩展)

如果之后你想加更多逻辑,用Python会更灵活。首先得先装iTerm2的Python库:
打开终端运行:

pip3 install iterm2

然后同样去配置动作:

  • 还是在偏好设置的按键标签页添加动作,动作选择运行Python脚本
  • 粘贴下面的代码:
import iterm2

async def main(connection):
    app = await iterm2.async_get_app(connection)
    current_window = app.current_window
    if not current_window:
        return
    current_session = current_window.current_tab.current_session
    if current_session:
        # 获取当前会话的列数,也就是窗口的字符宽度
        width = current_session.screen.columns
        # 将宽度写入会话,等同于粘贴效果
        await current_session.async_send_text(str(width))

iterm2.run_until_complete(main)
  • 绑定好快捷键后就能用啦。这里用异步API是因为iTerm的Python接口是基于异步设计的,这样能确保准确拿到当前活跃的窗口和会话。

简单说下原理:之前你用coprocess调用shell命令时,其实是启动了一个独立的子shell环境,它的尺寸是iTerm默认的配置值;而用iTerm的原生API,能直接访问当前正在使用的窗口和会话的实时属性,自然就能拿到真实的窗口宽度了。

备注:内容来源于stack exchange,提问作者GeneC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:35:26