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年以来的修复。

评论

刚遇到这个问题,“清除”对我有用。

万一有人遇到了同样的问题,完成上述所有操作后,我的tmux状态栏仍然混乱。将窗口选项设置为状态右可修复它。

以上建议也为我解决了。要执行此操作的命令是:Control + b +:,然后设置-g status-right“ #H”以将status-right设置为主机名。

#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;%stmux7' "`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



详细解释

这是为了解决其他答案和评论中发现的所有问题。当前,第二条命令似乎只剩下一小部分了。 (请参见下面的“缺失位”。)要了解其工作原理,让我们首先杀死ttyreset的状态行。之后,我们使用应该始终可用的方法(不同于命令tmux)再次进行纠正。

如何使UTF-8终端(假定stty -echo; printf '63k%2000s\33]2;5stty -echo7' $'27' )不可用

 printf '6' 



警告:在执行上述命令后,shell看上去盲目而聋哑,似乎只在胡说八道。语言。请参阅以下有关如何修复此问题的说明。


说明:


SO杀死终端类型响应
printf '3]2;%s$'57' 'right status text'执行printf '3k%2000s3\' $'27',所以您在备用字符集上
/bin/cat设置了正确的状态,在这种情况下为stty -echo',它暴露了显示错误。
vim设置了窗口标题名称

这可能是某些交互式命令崩溃并放回外壳后,您可以在终端上看到该组合。 (使用stty sane; printf '3k%s3\3]2;%sShift7' "$(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  


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