一個漂亮且有用的 Bash、ZSH、Fish 和 tcsh 提示產生器:
產生的提示被設計為類似於電力線,但除此之外該專案與電力線無關。
使用 DocToc 產生的目錄
powerline shell 支援的所有版本控制系統都可以讓您快速查看儲存庫的狀態:
⇡
或⇣
一起顯示,指示 git Push 或 Pull 是否處於掛起狀態。如果文件被修改或發生衝突,情況將用以下符號概括:
✎
-- 檔案已被修改(但未在 git 中暫存以進行提交)✔
-- 檔案被暫存以供提交 (git) 或新增以進行跟踪✼
-- 文件有衝突?
-- 文件未追蹤如果有多個文件匹配,則每個文件旁邊都會有一個數字。
該段可以以代表正在使用的版本控制系統的符號開始。若要顯示該符號,設定檔必須具有變數vcs
,並將選項show_symbol
設為true
(請參閱段配置)。
此腳本使用 ANSI 顏色代碼在終端中顯示顏色。眾所周知,這些都是不可移植的,因此可能無法開箱即用,但請嘗試將 $TERM 設定為xterm-256color
。
修補您的終端使用的字體:請參閱 powerline-fonts
使用 pip 安裝:
pip install powerline-shell
(如果您願意,您可以使用--user
選項僅為您的用戶安裝。但是您可能需要調整您的PATH
才能使其正常工作。 )
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
將以下內容新增至您的.bashrc
檔案:
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
注意:在 macOS 上,您必須將其新增至.bash_profile
、 .bash_login
或.profile
之一。 macOS 將按照上述順序執行文件,並在找到的第一個文件處停止執行。有關優先順序的更多信息,請參閱man bash
中的INVOCATION部分。
將以下內容新增至您的.zshrc
:
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" -a -x "$(command -v powerline-shell)" ]; then
install_powerline_precmd
fi
在~/.config/fish/config.fish中重新定義fish_prompt
:
function fish_prompt
powerline-shell --shell bare $status
end
將以下內容新增至您的.tcshrc
:
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
Powerline-shell 可以透過使用設定檔進行自訂。該檔案預計位於~/.config/powerline-shell/config.json
。您可以使用以下命令在此位置產生預設配置:
mkdir -p ~/.config/powerline-shell &&
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
(例如,我的設定檔位於此處:此處)
產生設定檔後,您現在可以開始新增或刪除「段」—shell 的建置區塊。可用段的清單可以在此處查看。
您也可以建立自訂細分。首先複製現有段,如下圖所示。確保將任何相對導入更改為絕對導入。 IE。改變諸如:
from .. utils import BasicSegment
到
from powerline_shell . utils import BasicSegment
然後更改add_to_powerline
函數以執行您想要的操作。然後,您可以在配置中使用此段,方法是將段的路徑放入段部分,例如:
"segments" : [
" ~/path/to/segment.py "
]
有兩個特殊部分可用。 stdout
接受任意指令,該指令的輸出將放入您的提示字元中。 env
接受一個環境變量,該變量的值將在您的提示中設定。例如,您的配置可能如下所示:
{
"segments": [
"cwd",
"git",
{
"type": "stdout",
"command": ["echo", "hi"],
"fg_color": 22,
"bg_color": 161
},
{
"type": "env",
"var": "DOCKER_MACHINE_NAME"
},
]
}
預設情況下,使用 unicode 字元(類似於 > 符號)來分隔每個段。這可以透過更改設定檔中的“模式”選項來更改。可用的模式有:
patched
- 預設值。compatible
- 嘗試使用您選擇的字體可能已經可用的字元。flat
- 段之間不使用分隔符,使每個段具有矩形外觀(並且還節省空間)。powerline_shell/themes
目錄儲存提示的主題,這些主題基本上是段使用的顏色值。 default.py
定義了一個可以獨立使用的預設主題,如果其他主題缺少任何片段的顏色,則可以回退到該主題。
如果您想建立自訂主題,請先複製現有主題之一,例如基本主題。並更新~/.config/powerline-shell/config.json
,將"theme"
設定為檔案的路徑。例如,您的配置可能有:
"theme": "~/mythemes/my-great-theme.py"
然後您可以根據自己的喜好修改顏色代碼。主題顏色使用 Xterm-256 顏色代碼指定。
colortest.py
提供了用於測試顏色組合的腳本。請注意,您看到的顏色可能會因您的終端而異。設計主題時,請在多個終端上測試您的主題,尤其是使用預設設定。
某些段支援附加配置。段的選項嵌套在段本身的名稱下。例如, cwd
段的所有選項都在~/.config/powerline-shell/config.json
中設置,如下所示:
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
cwd
段的選項有:
mode
:如果是plain
,則會使用簡單文字來顯示 cwd。如果dironly
,則僅顯示目前目錄。否則將 cwd 擴展為單獨的目錄。max_depth
:路徑中顯示的最大目錄數。max_dir_size
:路徑中每個目錄顯示的最大字元數。full_cwd
:如果為 true,則使用max_dir_size
時不會縮短最後一個目錄。 hostname
段提供了一個選項:
colorize
:如果為 true,主機名稱將根據其自身的雜湊值進行著色。 vcs
段提供了一個選擇:
show_symbol
:如果true
,版本控制系統段將以代表目前目錄中使用的特定版本控制系統的符號開頭。 battery
部分的選項有:
always_show_percentage
:如果為 true,則顯示交流電充滿電時的百分比。low_threshold
:低電量指示器顏色的閾值百分比。 time
的選項有:
format
:strftime 函數使用的格式字串,例如%H:%M
。powerline_shell/segments
目錄包含 python 腳本,這些腳本原樣注入到單一檔案powerline_shell_base.py
中。每個段腳本定義一個函數,該函數將一個或多個段插入到提示中。如果你想要新增一個新的段,只需在segment目錄中建立一個新檔案。
確保您的腳本不會引入可能與其他腳本衝突的新全域變數。您的腳本應該默默地失敗並在任何情況下快速運行。
確保在themes/default.py
中為您建立的每個新片段引入新的預設顏色。先用這個主題測試你的片段。
您應該盡可能為您的細分添加測試。歡迎單元測試和整合測試。透過運行test.sh
腳本來運行測試。它使用docker
來管理依賴項和環境。或者,您可以在requirements-dev.txt
中安裝需求後執行nosetests
命令。
請參閱常見問題。如果您仍然遇到問題,請提出問題。