cat
二进制文件后,我不小心拧紧了tmux终端。现在我的tmux
搞砸了。拆卸和重新连接无济于事,重绘也无济于事(C-b r)。运行reset
仅重绘活动窗格,而不重绘其余窗格。在ssty sane
内部或外部运行tmux
均无济于事。 在每个窗格中,我都能从键入的内容中得到正常的反馈(在终端弄乱后立即对
reset
进行首次呼叫即可解决此问题),但是我可以似乎无法修复状态栏。在
gnome-terminal
中,对状态栏的每次更新都会导致状态栏增长(请参见上面的屏幕截图)。例如,当我运行新应用程序,切换窗格或调整窗格大小时,会发生这种情况。强制重画(通过运行C-b r
或通过gnome-terminal菜单通过reset
)将状态栏收缩到单行,但仍然损坏。在
xterm
中,状态栏可以保持在一行内,但仍然损坏,如图所示。我正在使用tmux 1.5。
如何修复我的
tmux
-terminal?/>
2008年的此错误报告似乎描述了相同的问题,但已标记为已修复。我不知道它是在哪个版本中修复的,但是tmux 1.5应该包含2008年以来的修复。
#1 楼
尝试重命名窗口4切换到窗口4:Control + b 4
重命名窗口:Control + b,Control + u myNewname
/>(中间是逗号)
或:Control + b
:rename-window myNewname
评论
重命名窗口就像一个魅力
– exhuma
15年3月31日在8:30
在输入新名称之前,您需要清除名称。最简单的方法是使用ctrl + u,因此完整序列为ctrl + b,ctrl + u newname
–z0r
2015年5月22日4:46
甜-这也适用于byobu(f8,
–ali_m
15年11月18日在16:55
为什么需要Control-u? Control-,已经重命名了吗?尽管我可以确定在我的情况下需要它,但这是否是某种重置字符?
– hbogert
17年1月30日在10:20
Control-u清除该行。如果您在终端中每个胖手指都知道密码,则可以使用control-u清除输入内容,而不用按退格键20次
– Rqomey
17年1月31日在22:00
#2 楼
您需要两个命令序列来清理混乱:首先,在乱码窗口中运行此命令(即使在
ssh
中也可以使用):stty sane; printf '3k%s3\3]2;%stmux
7' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
然后在运行
tmux
的计算机上运行此命令(在tmux
的内部和外部均可):以下命令影响所有
tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
实例,它的左状态可能会比当前窗口大。如果不需要该功能,请不要使用它。tmux
详细解释
这是为了解决其他答案和评论中发现的所有问题。当前,第二条命令似乎只剩下一小部分了。 (请参见下面的“缺失位”。)要了解其工作原理,让我们首先杀死
tty
和reset
的状态行。之后,我们使用应该始终可用的方法(不同于命令tmux
)再次进行纠正。如何使
UTF-8
终端(假定stty -echo; printf '63k%2000s\33]2;5stty -echo
7' $'27'
)不可用 printf '6'
警告:在执行上述命令后,shell看上去盲目而聋哑,似乎只在胡说八道。语言。请参阅以下有关如何修复此问题的说明。
说明:
SO
杀死终端类型响应printf '3]2;%s$'5
7' 'right status text'
执行printf '3k%2000s3\' $'27'
,所以您在备用字符集上/bin/cat
设置了正确的状态,在这种情况下为stty -echo
',它暴露了显示错误。vim
设置了窗口标题名称这可能是某些交互式命令崩溃并放回外壳后,您可以在终端上看到该组合。 (使用
stty sane; printf '3k%s3\3]2;%sShift
7' "$(basename "$SHELL")" "$(uname -n)"; tput reset; tmux refresh
不能引起tty
恕我直言,但是像stty sane
这样的交互式命令通常会对此设置。)现在清理此混乱
printf '3k%s3\' "$(basename "$SHELL")"
注意:如果使用复制和粘贴(粘贴时可能需要按住
tmux rename-window "$(basename "$SHELL")"
),如果您使用上述命令弄乱了tmux rename-window
,则可能看不到粘贴。因此,粘贴后只需盲目按Enter键即可。 说明:
tmux
设置“合理”的终端参数,因此您在键入时会回显printf '3]2;%stmux set status-right "something"
7' "$(uname -n)"
设置窗口标题恢复正常。您也可以使用pane title
,但是status-right
仅限于始终运行转义序列的tmux
。tput reset
会将状态权限重置为默认显示。 (请注意,您不应使用tmux refresh
,因为它只会输出损坏的printf '3k%s3\' "$(basename "$SHELL")"
,所以tmux
只会暴露一些演示错误。也请注意,我没有找到直接设置窗格标题的printf '3k%s3\' "something"
命令。)tmux
重置终端,以防万一它被弄乱了tmux
刷新屏幕以清除可能出现的其他碎片缺少位
set-window-option automatic-rename on
失去了tmux
的标准功能,无法在左侧状态区域显示当前命令。执行:
后,此功能会丢失,我没有找到一个好的方法,但是,如何像以前一样将其恢复。但是,如下面的注释所述,您可以激活一个与以下
tmux
设置类似的tmux set-window-option automatic-rename on
的相似功能: sudo
可以在
ssh
命令行中执行此操作,可以在当前窗口中使用“转义” tmux
(其中“转义”是您的for a in `tmux list-windows | sed 's/:.*//'; do tmux set-window-option -t "$a" automatic-rename on; done`
命令键)进行访问,然后输入命令。或在当前终端执行
tmux
,但是如果您不直接位于正确的外壳程序级别,例如在tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
或q4312079q内不起作用,此操作将失败。或在当前q4312079q会话中打开另一个窗口,然后执行以下命令:
q4312079q
或打开运行q4312079q的计算机的另一个外壳,然后执行以下命令(这是tmux之外的命令):
q4312079q pre >
PS:感谢所有帮助组装此解决方案的人。评论
请注意,uname -n代替主机名-s。主机名在根上下文中很危险,因为您可能会在旧版Linux / Unix上将主机重命名为-s,而主机名不包含选项。
– Tino
16年5月5日13:00
不进行重置窗格标题让我伤心过;这就是为什么我首先在这里。感谢您是网页上唯一一个至少承认该缺点的人!
–进阶
16年1月19日在22:54
修复窗口标题后,还考虑“ tmux setw自动重命名”
– EB。
16年5月3日在20:03
当我的终端被搞砸并且什么也没显示时,呆板的神智的部分对我有所帮助。谢谢!
–约翰尼
16年8月30日在6:10
如果要“丢失位”,则i。 e。如果当前正在运行的命令显示在左侧状态区域中,则可以使用tmux命令set-window-option自动重命名。
–大卫·福斯特(David Foerster)
17年7月23日在11:34
#3 楼
您所看到的特定问题与窗口4的名称/标题有关。太长(很明显)和包含奇怪字符的组合(导致tmux将其测量为较短)(因此,它无法正确限制状态栏)到屏幕的宽度)我不确定如何重置它(因为它跟踪了前台进程的名称),您可能必须关闭窗口。评论
默认重命名窗口为^ b-,
–Rob
2012年12月6日下午4:17
如果@Rob注释中的键盘快捷键使您感到困惑,请按Ctrl-b,然后按.。
–道格·保罗
2014-02-17 18:09
请注意,在重命名窗口时,该字段会预先填充当前的窗口名称(并且光标位于该名称的末尾)。由于我的窗口名称是一长串垃圾,因此我不得不按住Backspace一分钟以清除当前名称。对我而言,视觉反馈最终清楚地表明,整个旧名称已被删除。
–道格·保罗
2014-2-17在18:10
您也可以使用Ctrl-b:rename-window <名称在此处>;这将使用tmux命令系统,而不是该命令的键盘快捷键。
–阿巴菲
2015年7月31日在2:08
#4 楼
只需执行此操作$ reset && tmux rename-window <new_window_name>
#5 楼
tmux set-option -g status off && tmux set-option -g status on
当窗口名称以外的其他东西损坏时,我为我解决了这个问题,我不厌其烦地弄清楚它是什么。
#6 楼
tmux
可能仅是问题的一部分。您可能必须在命令行上调用stty sane
。这会将内核中的TTY驱动程序重置为通常允许您继续进行操作的一组默认值。如果TTY驱动程序搞砸了,则可能必须键入stty sane
“盲目的”,即没有屏幕反馈。评论
stty sane也不能解决问题。我确实有屏幕上的反馈,在每个tmux窗格中,我都可以正常键入并获得反馈,但是一旦tmux需要绘制某些内容(例如,运行新应用程序,切换或调整窗格大小),状态栏就会移到窗格...
– Gerrit
2012年10月4日12:39
#7 楼
尝试重新加载配置文件吗?:source-file ~/.tmux.conf
评论
迄今为止最好的解决方案。
–戴夫
2015年9月29日上午10:41
#8 楼
为我解决此问题:我刚刚终止了问题窗格和窗口,并创建了一个新的窗口和窗格。
在问题窗格中,按CTRL + AX和CTRL + AC。
评论
再这样对我。没有其他方法可以帮助您
– itech
17年5月22日在8:23
评论
刚遇到这个问题,“清除”对我有用。万一有人遇到了同样的问题,完成上述所有操作后,我的tmux状态栏仍然混乱。将窗口选项设置为状态右可修复它。
以上建议也为我解决了。要执行此操作的命令是:Control + b +:,然后设置-g status-right“ #H”以将status-right设置为主机名。