有没有办法用预定义选项卡打开终端?我有 5 个最常用的路径,我想让终端在不同的选项卡中打开这些路径。我猜这应该是 AppleScript,但我没有足够的专业知识来编写它。你能帮助我吗?
谢谢。
答案1
nm,这是答案:
tell application "Terminal"
activate
do script "cd %path1%"
tell application "Terminal" to set custom title of tab 1 of front window to "Name 1"
tell application "System Events" to keystroke "t" using command down
delay 0.05
do script "cd %path2%" in window 1
tell application "Terminal" to set custom title of tab 1 of front window to "Name 2"
end tell
这将打开带有路径 1 和选项卡名称 1 的终端,以及带有路径 2 和选项卡名称 2 的另一个选项卡
答案2
首先,关于 AppleScript 的几点仅供学习之用:
- 如果两个命令都向同一个对象发送命令(
tell
即tell
终端)。该tell
块已足够;省略tell
其中的语句以解决终端(但保留地址系统事件)命令将被发送到终端。 - 我不会系统事件创建新选项卡的快捷键。首先,快捷键可能会发生变化,或者应用程序可能会因某种原因失去焦点并错过按键事件。事实上,如果你没有
do script
瞄准窗口 1,而是让它不被定位,终端将继续自行创建新选项卡。这样就无需编写几行代码了。
因此,如果您需要做的只是在不同位置创建一堆标签,那么它会很简单:
-- Launch terminal without creating any windows
launch
-- Create a bunch of tabs at desired path locations
-- then clear the window to neaten its appearance
do script "cd ~; clear"
do script "cd /; clear"
do script "cd /Applications; clear"
(您可以将所有这些放在一个tell
块定位中终端;我只是设置脚本编辑器在导航栏中帮我完成此操作)。
要设置每个选项卡的标题(一次性创建所有选项卡),需要小心确保我们定位正确的窗户每个选项卡的对象。这些额外的代码行直接添加到上面的代码行之后,并命名选项卡“标签 1”、“标签 2”等,按照它们出现的顺序排列:
-- Get window ("tab") id's and sort numerically
-- with the help of bash functionality
set IDs to id of every window
set AppleScript's text item delimiters to " "
do shell script ({¬
"echo", ¬
IDs, ¬
"| tr ' ' '\n'", ¬
"| sort -n", ¬
"| tr '\n' ' '"} as string)
set IDs to the words of result
-- Give each tab a new custom title
repeat with n from 1 to number of windows
set custom title of tab 1 of ¬
window id (item n in IDs) to ¬
{"Tab", n} as string
end repeat
窗口组
其次 - 最重要的是,因为这实际上直接回答了您的原始问题 - 根本不需要 AppleScript 来实现您想要的。 终端有内置方法来保存一组窗口(选项卡),然后在每次启动时重新启动这些窗口终端。 就是这样:
- 创建您想要的选项卡。将
cd
每个选项卡放入您想要的位置(或在您希望的选项卡中运行任何命令)。 - 来自窗户菜单,选择将 Windows 另存为组...在弹出的对话框中,输入该组的名称,并选择是否希望每次启动时都打开这组窗口终端。
- 现在他们可以了。您可以保存多个窗口组,然后从窗户菜单通过选择开窗集团。
- 要管理这些已保存的组,请转至首选项 > 窗口组,您可以在其中删除不再需要的文件。
这样做的一个缺点是标签标题不会自动设置,尽管你可以在首选项 > 配置文件 > 窗口/选项卡。