有没有一种方法可以发出命令关闭所有tmux窗口,除非该窗口中有打开的文件、正在运行的进程等?例如,类似于网页浏览器中右键单击并选择“关闭所有其他选项卡”。我希望在tmux中发出此命令,并且与网页浏览器示例类似,繁忙的窗口或面板会提示我关闭它们或无声地失败。
我看到了这个问题,但我不一定想对所有窗口发出命令。
有没有一种方法可以发出命令关闭所有tmux窗口,除非该窗口中有打开的文件、正在运行的进程等?例如,类似于网页浏览器中右键单击并选择“关闭所有其他选项卡”。我希望在tmux中发出此命令,并且与网页浏览器示例类似,繁忙的窗口或面板会提示我关闭它们或无声地失败。
我看到了这个问题,但我不一定想对所有窗口发出命令。
for win_id in $(tmux list-windows -F '#{window_active} #{window_id}' | awk '/^1/ { active=1; next } active { print $2 }'); do tmux kill-window -t "$win_id"; done
And here's the same (readable version):
for win_id in $(tmux list-windows -F '#{window_active} #{window_id}' | \
awk '/^1/ { active=1; next } active { print $2 }')
do
tmux kill-window -t "$win_id"
done
编辑:我已经做了一个插件! https://github.com/pschmitt/tmux-forsaken
我刚刚编写了一个脚本来实现这个功能,代码如下:
#!/usr/bin/env python3
import subprocess
import os
import re
result = subprocess.run(['tmux', 'list-windows'], stdout=subprocess.PIPE)
result = result.stdout.decode('utf-8')
lines = result.splitlines()
should_close_next = False
for line in lines:
if should_close_next:
window = line.split(':')[0]
os.system(f'tmux kill-window -t {window}')
continue
match = re.search("active", line)
if match:
should_close_next = True
要将其与您的tmux集成,请将其添加到您的tmux.conf中
bind-key "k" run-shell "kill_panes_to_right.py\n"
#{window_panes}
获取当前窗格的数量,并循环遍历它们,确保正在测试的窗格号大于当前窗格(即在当前窗格右侧)。然后只需为该窗格发送kill pane
命令即可。 - jeremysprofile