如何设置 shell 对长命令进行换行?

如何设置 shell 对长命令进行换行?

我连接到 Slackware 服务器。当命令长于腻子窗口的大小时,该行会在同一行中继续,并且当我继续添加到同一命令时,该命令的开头会消失,只需在该行的开头放置一个“<”即可。

松弛软件服务器

当我在 Red Hat 服务器上工作时,我可以看到整个命令,因为控制台只是根据需要添加行。

红帽服务器

我不知道在哪里打开自动换行功能。在哪里可以将 Slackware 服务器设置为像 Red Hat 服务器一样换行? PS:请原谅我的英语。

答案1

这可能是因为您正在使用bash(或其他使用 readline 的 shell)并且在您的~/.inputrc(或全局/etc/inputrc)中您有

set horizontal-scroll-mode On

man readline

horizontal-scroll-mode( Off)
当设置为 时 On,使 readline 使用单行进行显示,当输入变得比屏幕宽度长时,在单屏幕行上水平滚动输入而不是换行到新行。

解决方案:删除该行(默认设置为Off)或显式将该选项设置为Off

set horizontal-scroll-mode Off

Readline/etc/inputrc仅在~/.inputrc不存在或无法读取时使用(~/.inputrc也可能$include /etc/inputrc),因此即使存在On并且/etc/inputrc您不能或不想更改它,您始终可以通过编辑来覆盖设置~/.inputrc

该更改不会自动影响已经运行的 shell。您可以使用以下命令重新加载配置

bind -f ~/.inputrc

(看),或者仅更改该设置

bind 'set horizontal-scroll-mode off'

horizontal-scroll-mode如果TERM环境变量设置为 terminfo 数据库中找不到的终端名称,readline 库也会回退;您可以使用命令检查是否是这种情况infocmp。看这里了解如何补救这种情况。


一些不使用 readline(特别是Android 上的默认设置)的 pdksh 派生 shell 中使用了类似的界面(但<在行的右端显示标记) 。mksh对于这种情况,没有可能的解决方法。

相关内容