我想清除特定tmux窗格中的所有滚动历史。
当前回答
如果你在OSX上用Iterm挣扎:
其他回答
我发现使用send-keys - r有点慢-这里有另一种方法用一个命令清除屏幕和历史记录
bind-key C send-keys "clear && tmux clear-history" \; send-keys "Enter"
嵌套tmux调用的使用更为明显
“clear”\;send-keys“Enter”\;clear-history
未能从历史记录中清除屏幕的当前文本- clear-history命令似乎在单独的线程中运行以发送密钥。
发现这在TMUX 2.6中工作得最好,清除屏幕,滚动,但保持提示后显示。
使用ctrl - l
bind-key -n C-l send-keys C-l \; send-keys -R \; clear-history
Ctrl-L在控制台应用程序中用于重绘屏幕。我发现当绑定到send-keys -R时,它会导致方向键在某些应用程序(如vim, mc)中不再正常工作。
为了在控制台应用程序中保留重绘功能,我使用了:
bind-key -n C-l if-shell -F '#{alternate_on}' 'send-keys C-l' 'send-keys -R C-l; clear-history'
这需要打开tmux选项的备用屏幕(默认情况下是这样)。
如果您希望完全清除窗格,另一种选择是暂时将窗格调整为一行,清除历史记录,然后将其调整回来。这应该可以用一个tmux命令链无闪烁地工作。其优点是无论窗格中运行的是什么程序,它都可以正常工作。当然,这使得shell脚本逻辑更加复杂。
bind-key -n F11 run "
if [[ #{window_panes} == "1" ]] ; then
tmux send-keys C-l; sleep 0.1 ; tmux clear-history ;
else
restored_height=$((#{pane_height} + #{pane_at_bottom}));
tmux resize-pane -y 1 \\; clear-history \\; resize-pane -y \${restored_height} ;
fi
"
为了快速清除单个tmux窗格,你可以设置一个别名…
# Tmux Clear pane
alias tc='clear; tmux clear-history; clear'