iTerm2 的文档页面显示,其最新测试版增加了 Python API。具体来说就是,iTerm2 提供了一个 Python 包,通过它我们可以轻松编写控制 iTerm2 并扩展其行为的 Python 脚本。
当然,该功能目前尚处于 Beta 阶段,API 可能偶尔会发生变化。
示例代码
Function Key Tabs(通过功能键切换选项卡)
#!/usr/bin/env python3
import asyncio
import iterm2
async def main(connection):
app = await iterm2.async_get_app(connection)
keycodes = [ iterm2.Keycode.F1,
iterm2.Keycode.F2,
iterm2.Keycode.F3,
iterm2.Keycode.F4,
iterm2.Keycode.F5,
iterm2.Keycode.F6,
iterm2.Keycode.F7,
iterm2.Keycode.F8,
iterm2.Keycode.F9,
iterm2.Keycode.F10,
iterm2.Keycode.F11,
iterm2.Keycode.F12 ]
async def keystroke_handler(connection, keystroke):
if keystroke.modifiers == [ iterm2.Modifier.FUNCTION ]:
try:
fkey = keycodes.index(keystroke.keycode)
if fkey >= 0 and fkey < len(app.current_terminal_window.tabs):
await app.current_terminal_window.tabs[fkey].async_select()
except:
pass
pattern = iterm2.KeystrokePattern()
pattern.forbidden_modifiers.extend([iterm2.Modifier.CONTROL,
iterm2.Modifier.OPTION,
iterm2.Modifier.COMMAND,
iterm2.Modifier.SHIFT,
iterm2.Modifier.NUMPAD])
pattern.required_modifiers.extend([iterm2.Modifier.FUNCTION])
pattern.keycodes.extend(keycodes)
async def monitor():
async with iterm2.KeystrokeMonitor(connection) as mon:
while True:
keystroke = await mon.async_get()
await keystroke_handler(connection, keystroke)
# Run the monitor in the background
asyncio.create_task(monitor())
# Block regular handling of function keys
filter = iterm2.KeystrokeFilter(connection, [pattern])
async with filter as mon:
await iterm2.async_wait_forever()
iterm2.run_forever(main)
使用该脚本,我们可以通过按下功能键来选择选项卡。F1 表示选择第一个选项卡,F2 表示选择第二个选项卡等。>>> 脚本下载
官方还提供了关于该功能的教程,包含了编写脚本的详细指南,并描述了 iTerm2 脚本系统的架构。
iTerm2 是 iTerm 的后继者,也是 Terminal 的替代者。这是一款用于 macOS 的终端模拟器,支持窗口分割、热键、搜索、自动补齐、无鼠标复制、历史粘贴、即时重播等功能特性,适用于 macOS 10.10 及以上版本。
iTerm2 下载地址:↓↓↓
Mac 终端神器 iTerm2 新增 Python API - 开源中国
文章来源: https://www.toutiao.com/group/6672289361037361675/