Pureline을 가볍게 만드는 config

14551 단어 gitbashWindows

Pureline 좋은 느낌



Windows에서 GitBash를 사용하고 있습니다.
좋은 느낌의 프롬프트로 하고 싶었기 때문에 Pureline를 도입
htps : // 기주 b. 코 m / chri s-ma rsh / 푸레

Powerline와 같은 인터페이스 (↓는 공식 git 이미지)
official_screenshot

하지만 뭔가 무거운 느낌



너무 무거워...
콘솔을 다시 표시하는 데 2 ​​~ 3 초가 걸리는 것 같습니다 ...

맞춤형 프로필 만들기



git_module이 분명히 무거운 것 같습니다.
function git_module {
    local git_branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null)
    if [ -n "$git_branch" ]; then
        local bg_color="$1"
        local fg_color="$2"
        local content="${PL_SYMBOLS[git_branch]} $git_branch"

        if [ "$PL_GIT_STASH" = true ]; then
            local number_stash="$(git stash list 2>/dev/null | wc -l)"
            if [ ! "$number_stash" -eq 0 ]; then
                content+="${PL_SYMBOLS[git_stash]}$number_stash"
            fi
        fi

        if [ "$PL_GIT_AHEAD" = true ]; then
            local number_behind_ahead="$(git rev-list --count --left-right '@{upstream}...HEAD' 2>/dev/null)"
            local number_ahead="${number_behind_ahead#* }"
            local number_behind="${number_behind_ahead% *}"
            if [ ! "0$number_ahead" -eq 0 -o ! "0$number_behind" -eq 0 ]; then
                if [ ! "$number_ahead" -eq 0 ]; then
                    content+="${PL_SYMBOLS[git_ahead]}$number_ahead"
                fi
                if [ ! "$number_behind" -eq 0 ]; then
                    content+="${PL_SYMBOLS[git_behind]}$number_behind"
                fi
            fi
        fi

        if [ "$PL_GIT_STAGED" = true ]; then
            local number_staged="$(git diff --staged --name-only --diff-filter=AM 2> /dev/null | wc -l)"
            if [ ! "$number_staged" -eq "0" ]; then
                content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_staged]}$number_staged"
            fi
        fi

        if [ "$PL_GIT_CONFLICTS" = true ]; then
            local number_conflicts="$(git diff --name-only --diff-filter=U 2> /dev/null | wc -l)"
            if [ ! "$number_conflicts" -eq "0" ]; then
                content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_conflicts]}$number_conflicts"
            fi
        fi

        if [ "$PL_GIT_MODIFIED" = true ]; then
            local number_modified="$(git diff --name-only --diff-filter=M 2> /dev/null | wc -l )"
            if [ ! "$number_modified" -eq "0" ]; then
                content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_modified]}$number_modified"
            fi
        fi

        if [ "$PL_GIT_UNTRACKED" = true ]; then
            local number_untracked="$(git ls-files --other --exclude-standard | wc -l)"
            if [ ! "$number_untracked" -eq "0" ]; then
                content+=" ${PL_SYMBOLS[soft_separator]} ${PL_SYMBOLS[git_untracked]}$number_untracked"
            fi
        fi

        if [ -n "$(git status --porcelain)" ]; then
            if [ -n "$PL_GIT_DIRTY_FG" ]; then
                fg_color="$PL_GIT_DIRTY_FG"
            fi
            if [ -n "$PL_GIT_DIRTY_BG" ]; then
                bg_color="$PL_GIT_DIRTY_BG"
            fi
        fi

        PS1+="$(section_end $fg_color $bg_color)"
        PS1+="$(section_content $fg_color $bg_color " $content ")"
        __last_color="$bg_color"
    fi
}
  • 한 번의 조작으로 여러 번 git 명령을 치고 있습니다 ...
  • 상세를 보고 싶으면 스스로 커맨드 치고 GUI 툴 사용하게 되므로 branch 이외의 표시를 전부 disable에
  • config로 지정하고 있는 $PL_GIT_STASH같은 것을 전부 false에


  • 그 밖에도 사용하지 않는 것 같은 module를 disable에(↓이엔)
  • time_module
  • battery_module
  • virtual_env_module
  • read_only_module
  • background_jobs_module
  • newline_module
  • prompt_module

  • 상당히 가벼워진 느낌



    로컬로 clone하고 ↓처럼 .bashrc 당 읽으면 OK
    source [ClonedPath]/pureline/pureline
    source [ClonedPath]/pureline/configs/custom.conf
    

    기타



    git 커멘드의 실행 결과를 캐쉬하도록 해 기능 깎지 않아도 가볍게 하거나 할 수 없는 것일까?

    좋은 웹페이지 즐겨찾기