一个漂亮且有用的 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
命令。
请参阅常见问题解答。如果您仍然遇到问题,请提出问题。