Linux

如何設置 shell 為長命令換行?

  • July 14, 2019

我連接到 Slackware 伺服器。當命令比膩子視窗的大小長時,該行繼續在同一行中,並且命令的開頭消失了,因為我繼續添加到同一命令,只是在行的開頭放了一個“<”。

鬆弛軟體伺服器

當我在 Red Hat 伺服器上工作時,我可以看到整個命令,因為控制台只是根據需要添加行。

紅帽伺服器

我不知道我在哪裡打開自動換行。我可以在哪裡設置 Slackware 伺服器來像我的 Red Hat 伺服器那樣換行?PS:對不起,我的英語。

這可能是因為您正在使用bash(或其他使用 readline 的 shell)並且在您的~/.inputrc(或 global /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

(請參閱this),或僅更改該設置

bind 'set horizontal-scroll-mode off'

horizontal-scroll-mode如果TERM環境變數設置為在 terminfo 數據庫中找不到的終端名稱,readline 庫也將回退;您可以使用命令檢查是否是這種情況infocmp。請參閱此處了解如何補救這種情況。


類似的界面(但&lt;在行的右端顯示標記)用於一些不使用 readline 的 pdksh 派生的 shell(特別是mkshAndroid 上的預設值)。對於這種情況,沒有可能的解決方法。

引用自:https://unix.stackexchange.com/questions/525477