Làm cách nào để định cấu hình thuật ngữ Mac OS X để git có màu? [đóng cửa]


200

Tôi đã thấy một bản demo git Mac OS X trực tuyến trong đó nó được cấu hình để có nhiều màu.

Ví dụ, dấu nhắc của anh ta là màu hổ phách, lsthư mục của anh ta có màu tím và git diffđầu ra của anh ta có ~ 4 màu (hồng, xanh nhạt, đỏ, vàng nhạt).

Bạn có thể cho tôi biết làm cách nào tôi có thể định cấu hình thiết bị đầu cuối Mac OS X để đạt được điều đó không? Đó chắc chắn là Mac OS X Terminal.app, không phải iTerm.


3
Ngoại trừ việc superuser.com vẫn đang trong giai đoạn thử nghiệm riêng tư và yinglcs có thể không có quyền truy cập.
Fredrik

Có một số yêu cầu đăng ký beta siêu người dùng bên cạnh những gì được đề cập trên blog.stackoverflow.com/2009/07/ trên ?
las3rjock

3
Có lẽ là không, nhưng có bao nhiêu người dùng biết về điều đó? Không giống như có một liên kết đến bài đăng đó trên superuser.com mà người dùng nhận được câu hỏi được di chuyển sẽ tìm thấy khi anh ta đến đó (nếu có, tôi không thể tìm thấy nó).
Fredrik

3
Một câu hỏi hữu ích khác đã đóng lại. Rất may không trước khi một số người có thể trả lời.
Ben Thurley

1
Bây giờ nó đã được thiết lập tốt khi các câu hỏi của Git thuộc chủ đề; Đóng cửa của @ casperOne ở đây là sai và tôi đã bỏ phiếu để mở lại.
Đánh dấu Amery

Câu trả lời:


391

Câu trả lời của William Purcell chỉ cho phép màu cho lệnh 'git diff'. Làm điều này để bật màu cho tất cả các lệnh git:

$ git config --global color.ui true

Đúng thứ tôi cần. Cảm ơn.
jffgrdnr

1
Sự hoàn hảo thuần khiết. Cảm ơn ngài.
Brandon Buck

1
hoặc bạn có thể kiểm tra lựa chọn phong phú thay thế này tại đây: gist.github.com/trey/2722934
Yannis Dran

@yinglcs, chấp nhận câu trả lời này rồi, được không?!
Eliran Malka

điều này không hoạt động
KansaiRobot

57

Để hiển thị màu trong đầu ra của git diff, bạn cần cấu hình git. Hãy thử chạy

$ git config --global color.diff true

để đặt $ HOME / .gitconfig một cách thích hợp.


William, vâng! Đây là những gì tôi đã thiếu.
avernet

cảm ơn, nó hoạt động hoàn hảo
Antiqe

13

Nó không phải là thứ bạn thường định cấu hình thiết bị đầu cuối để làm ... Thiết bị đầu cuối không biết nó đang hiển thị nhưng hãy thử cái này trong vỏ của bạn (nếu bạn đang sử dụng bash, trong một số shell khác bạn không xuất nhưng gọi setenv hoặc thứ gì khác):

export CLICOLOR=1
export TERM=xterm-color

Sau đó, bạn có thể sử dụng trình tạo LSCOLORS để thiết lập một cái gì đó mà bạn có thể xuất bằng cách sử dụng một cái gì đó như:

export LSCOLORS=fxfxcxdxbxegedabagacad

(ở trên sẽ cung cấp cho bạn các thư mục màu tím)

Khi bạn hoàn thành và hài lòng với kết quả, hãy thêm ba dòng vào tệp / etc / bashrc hoặc tệp .bashrc trong thư mục chính của người dùng.

Chỉnh sửa: Ngoài ra, trong thiết bị đầu cuối của bạn, đảm bảo hộp kiểm "Hiển thị màu ANSI" (trên trang "Văn bản") được chọn.


.bashrc cũng hoạt động? Trên máy Mac của tôi, nó là .bash_profile, tôi biết đó là .bashrc trên Linux nhưng tôi thấy nó khác với mac với toàn bộ BSD (Dường như LSCOLORS khác với Linux và BSD / Mac).
Jorge Israel Peña

.bashrc hoạt động với tôi ... Và vâng, nó khác. gls sử dụng LS_COLORS (cũng có thể được tạo bằng trang được liên kết đến)
Fredrik

Cảm ơn. Nhưng làm thế nào người ta có thể định cấu hình cho các màu như 'lúa mì', 'màu tím' trong đầu ra dấu nhắc hoặc ls? hoặc 'màu hồng' trong đầu ra 'git diff'. Cảm ơn bạn.
yinglcs

Các màu có thể là màu bạn có thể tìm thấy tại trang web tôi liên kết, nó là một phần của tiêu chuẩn và khi họ xác định nó, bạn rất vui nếu bạn có một thiết bị đầu cuối có khả năng hiển thị 16 màu.
Fredrik

13

Đây là những gì tôi sử dụng trong tệp .profile của mình. Hoạt động như một bùa mê vì nó cho phép tôi nhìn thấy nhánh git hiện tại cũng như trạng thái của nó thông qua màu sắc. Nếu bạn muốn sửa đổi nó, xin lưu ý rằng việc thoát mã màu là rất quan trọng để tránh các vấn đề về nguồn cấp dữ liệu trong các dòng dài.

# Setting GIT prompt
c_cyan=`tput setaf 6`
c_red=`tput setaf 1`
c_green=`tput setaf 2`
c_sgr0=`tput sgr0`

branch_color ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        color=""
        if git diff --quiet 2>/dev/null >&2 
        then
            color=${c_green}
        else
            color=${c_red}
        fi
    else
        return 0
    fi
    echo -n $color
}

parse_git_branch ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        gitver="["$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')"]"
    else
        return 0
    fi
echo -e $gitver
}

#It's important to escape colors with \[ to indicate the length is 0
PS1='\u@\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ '

Tập tin .profile nào bạn đề cập?
Darshan Puranik

@DarshanPurani, tôi muốn nói .profiletập tin trong $ bash của tôi
Marc M

2

Mở ứng dụng thiết bị đầu cuối, sau đó mở hộp thoại tùy chọn thông qua menu (Terminal -> Preferences) hoặc bằng cách nhấn Command+, . Khi hộp thoại tùy chọn mở ra, chọn kiểu thiết bị đầu cuối từ khung bên trái, chọn Văn bản từ thanh nút, hơn là đảm bảo hộp kiểm "Hiển thị màu ANSI" được chọn.

Điều đó sẽ kích hoạt màu sắc trên thiết bị đầu cuối. Để có được màu trong đầu ra trên thiết bị đầu cuối, bạn sẽ cần phải nhúng các lệnh màu ANSI trong dữ liệu được gửi đến thiết bị đầu cuối. Làm thế nào điều này được thực hiện là phụ thuộc vào các lệnh. Ví dụ (như được hiển thị ở trên) lslệnh có tùy chọn màu. Đối với mã màu, hãy tìm kiếm trên google cho "màu ansi".


Lưu ý rằng câu hỏi đã được đóng lại ngoài chủ đề. :)
Ryan Kohn

0

Đối với đầu ra ls màu, tôi khuyên bạn nên cài đặt lõi gnu và sử dụng phiên bản ls đó thay thế. Đối với một trong hai phiên bản của ls, bạn sẽ cần chuyển cờ chính xác cho nó, đó là - màu cho phiên bản gnu hoặc -G cho phiên bản OS X tiêu chuẩn. Vì vậy, bạn có thể làm một cái gì đó như

alias ls='ls --color'

trong .bashrc của bạn.

Để tô màu lời nhắc của bạn, bạn sẽ cần sử dụng mã màu chính xác cho thiết bị đầu cuối của mình, nhưng tôi sử dụng mã màu

PROMPT="$(print '%{\e[0;38m%}%{\e[1;1m%]%}[%m:%c] %n%%%{\e[0m%}') "

để sản xuất

[hostname:directory] username%

màu trắng đậm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.