iTerm2 Python API 拆分选项卡

0st*_*ne0 5 iterm2

使用3.3.0版本中添加的iTerm Python API,是否可以水平分割选项卡?相同于;

右键单击 -> 水平分割窗格


import iterm2

async def main(connection):

    # Get app
    app = await iterm2.async_get_app(connection)

    # current window
    window = app.current_terminal_window
    if window is not None:

        # Create main & sub tab
        main = await window.async_create_tab()
        await main.async_set_title('~ MAIN ~')
        sub = await window.async_create_tab()
        await sub.async_set_title('~ SUB ~')

        # Split sub
        ...
Run Code Online (Sandbox Code Playgroud)


发送默认击键 ( command+ d)似乎不可能

Mij*_*lko 8

iTerm Python API有一个async_split_pane可以分割窗格的方法:

tab = await window.async_create_tab()
session = tab.current_session
splited = await session.async_split_pane(vertical=False)
Run Code Online (Sandbox Code Playgroud)

Session 负责拆分选项卡。如果您想拆分新创建的窗格,请执行以下操作:

await splited.async_activate()
await session2.async_split_pane(vertical=True)
Run Code Online (Sandbox Code Playgroud)

你的例子:

#!/usr/bin/env python3.7
    
import iterm2


async def main(connection):

    # Get app
    print("Test::main")
    app = await iterm2.async_get_app(connection)

    # Ensure window
    window = app.current_terminal_window
    if app.current_terminal_window is None:
        exit()

    # Create main tab
    main = await window.async_create_tab()
    await main.async_activate()
    await main.async_set_title('~ Title ~')
    sess = main.current_session

    # Split main
    sub = await sess.async_split_pane(vertical=True)
    await sub.async_send_text('whoami\n')

iterm2.run_until_complete(main)
Run Code Online (Sandbox Code Playgroud)

  • 请不要仅发布代码作为答案,还要提供解释您的代码的作用以及它如何解决问题的问题。带解释的答案通常更有帮助,质量也更好,并且更有可能吸引点赞。 (2认同)