Bash
添加換行以提示是否太長
我在我的 bash 提示符中顯示我的完整工作目錄以及其他資訊(git 等),有時它會變得很長。
我想在提示符末尾添加一個換行符,這樣我就可以在下一行鍵入命令,但**前提是提示符很長,**例如超過 50 個字元。
| ~ $ Typing a command here is nice |
| ~/foo/longDirectoryName/longsubirectory/src/package (master +*) $ Typing here s| | ucks. I want to just start on a new line |
顯然,如果我想總是在下一行輸入我的命令,我可以添加一個換行符
PS1
(如在這篇文章中)。但我還沒有找到有條件的方法,因為PS1
它只是一個格式字元串。PS 我實際上正在使用 ZSH 嘗試自定義 Agnoster 主題,但我想一般 bash 的任何解決方案都會有所幫助。
在
zsh
中,這就是%<number>(l:<yes>:<no>)
快速擴展的目的。當數字為負數時,如-30
,如果距離螢幕右邊緣至少還有 30 個字元,則yes
輸出文本,否則no
,則:PS1=$'%~%-30(l::\n)$ '
如果少於 28 個字元(30 減去
"$ "
)供您在行上使用,則插入換行符。您可以通過以下方式完成50 次或更多:
PS1=$'%~%50(l:\n:)$ '
但是IMO,保證最小可用空間比最大不可用空間更有用。
有關詳細資訊,請參閱手冊。您會找到其他指令來截斷長提示並替換為省略號,例如您可能會發現它們也很有用。
注意zsh提示擴展和.zsh提示擴展完全不同
bash
。它實際上更接近 的tcsh
,因此 的 解決方案bash
不太可能對 有太大用處zsh
,儘管反過來它通常更正確。