Bash, ZSH, Fish 및 tcsh를 위한 아름답고 유용한 프롬프트 생성기:
생성된 프롬프트는 전력선과 유사하게 설계되었지만, 그 외에는 이 프로젝트는 전력선과 아무런 관련이 없습니다.
DocToc으로 생성된 목차
Powerline Shell에서 지원하는 모든 버전 제어 시스템을 사용하면 저장소 상태를 빠르게 확인할 수 있습니다.
⇡
또는 ⇣
와 함께 표시됩니다.파일이 수정되거나 충돌하는 경우 상황은 다음 기호로 요약됩니다.
✎
-- 파일이 수정되었습니다(그러나 git에서 커밋을 위해 준비되지 않음).✔
-- 커밋(git)을 위해 파일이 준비되거나 추적을 위해 추가됩니다.✼
-- 파일에 충돌이 있습니다?
-- 파일이 추적되지 않습니다.둘 이상의 파일이 일치하는 경우 각 항목 옆에 숫자가 표시됩니다.
세그먼트는 사용 중인 버전 제어 시스템을 나타내는 기호로 시작할 수 있습니다. 해당 기호를 표시하려면 구성 파일에 show_symbol
옵션이 true
로 설정된 vcs
변수가 있어야 합니다(세그먼트 구성 참조).
이 스크립트는 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
(예를 들어, 내 구성 파일은 여기에 있습니다: 여기)
구성 파일을 생성한 후에는 이제 셸의 구성 요소인 "세그먼트"를 추가하거나 제거할 수 있습니다. 사용 가능한 세그먼트 목록은 여기에서 볼 수 있습니다.
맞춤 세그먼트를 만들 수도 있습니다. 이와 같은 기존 세그먼트를 복사하여 시작하세요. 상대 가져오기를 절대 가져오기로 변경했는지 확인하세요. 즉. 다음과 같이 변경하세요.
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"
},
]
}
기본적으로 유니코드 문자(> 기호와 유사)는 각 세그먼트를 구분하는 데 사용됩니다. 이는 구성 파일의 "mode" 옵션을 변경하여 변경할 수 있습니다. 사용 가능한 모드는 다음과 같습니다.
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인 경우 AC에서 완전히 충전되었을 때 백분율을 표시합니다.low_threshold
: 배터리 부족 표시 색상의 임계값 백분율입니다. time
세그먼트에 대한 옵션은 다음과 같습니다.
format
: strftime 함수에서 사용하는 형식 문자열입니다(예: %H:%M
. powerline_shell/segments
디렉터리에는 단일 파일 powerline_shell_base.py
에 그대로 삽입되는 Python 스크립트가 포함되어 있습니다. 각 세그먼트 스크립트는 프롬프트에 하나 이상의 세그먼트를 삽입하는 기능을 정의합니다. 새 세그먼트를 추가하려면 세그먼트 디렉터리에 새 파일을 생성하기만 하면 됩니다.
스크립트가 다른 스크립트와 충돌할 수 있는 새로운 전역 변수를 도입하지 않는지 확인하세요. 스크립트는 어떤 시나리오에서도 자동으로 실패하고 빠르게 실행되어야 합니다.
새로 만드는 모든 세그먼트에 대해 themes/default.py
에 새로운 기본 색상을 도입했는지 확인하세요. 먼저 이 테마로 세그먼트를 테스트하세요.
가능한 한 최선을 다해 세그먼트에 대한 테스트를 추가해야 합니다. 단위 및 통합 테스트 모두 환영합니다. test.sh
스크립트를 실행하여 테스트를 실행하세요. docker
사용하여 종속성과 환경을 관리합니다. 또는 requirements-dev.txt
에 요구사항을 설치한 후 nosetests
명령을 실행할 수 있습니다.
FAQ를 참조하세요. 문제가 계속 발생하면 문제를 열어주세요.