在 iTerm2 中(撰写本文时我正在使用 Build 2.1.4),如何清除所有会话的回滚缓冲区。我知道cmd+K将清除当前会话。使用相同的组合键与广播输入不起作用。
感谢您的帮助!
答案1
这个 applescript 应该清除当前 iTerm 窗口中所有会话的回滚:
tell application "iTerm"
tell current terminal
activate
set myCurrentSession to the current session
repeat with theSession in sessions
tell theSession
select
tell application "System Events" to tell process "iTerm"
click menu item "Clear Buffer" of menu 1 of menu bar item "Edit" of menu bar 1
end tell
end tell
end repeat
select myCurrentSession
end tell
end tell
将其绑定到键盘快捷键:
打开 Automator 并创建一个新的服务。
将“服务接收”设置为“无输入”,并选择“iTerm.app”作为应用程序。
放入一个运行 Applescript操作,然后粘贴上面的代码。
另存为
clear-all-scrollback-buffers-in-current-iterm-window
。现在,当 iTerm 打开时,您将在菜单栏中看到该服务终端>服务。
打开系统偏好设置>键盘>快捷方式>服务。向下滚动直到看到
clear-all-scrollback-buffers-in-current-iterm-window
。为其指定键盘快捷键(例如optioncommandk)
如果这不起作用,您可以尝试以下 AppleScript:
tell application "iTerm"
tell current terminal
activate
repeat with theSession in sessions
tell theSession
select
tell application "System Events"
delay 0.1
keystroke "k" using {command down}
end tell
end tell
end repeat
end tell
end tell
答案2
接受的答案对我不起作用。我正在使用 iTerm2 Build 3.0.15。
将所需操作(在我的情况下为清除缓冲区)绑定到后,效果如下F12:
tell application "iTerm"
set currentWindow to the current window
set currentTab to the current tab of the current window
set currentSession to the current session of the current tab of the current window
repeat with aWindow in windows
tell aWindow
activate
repeat with theTab in tabs of aWindow
tell theTab
select
repeat with theSession in sessions of theTab
tell theSession
select
tell application "System Events" to tell process "iTerm"
tell application "System Events"
key code 111
end tell
end tell
end tell
end repeat
end tell
end repeat
end tell
end repeat
select currentWindow
select currentTab
select currentSession
end tell
这是一个很有用的工具,因为我倾向于让日志全天候运行。我安排它每天早上通过 crontab 运行,这样我上班时就可以拥有一个干净的记录和一些释放的内存(根据我跟踪的日志文件,内存可能达到 GB)。