Tôi thiết lập một PROMPT_COMMAND
để hiển thị chi nhánh hiện tại trong khi tôi đang ở trong một repo git.
Phần có liên quan của .bashrc của tôi là:
export PS1=" \[\033[34m\]\$\[\033[0m\] "
export PROMPT_COMMAND="$HOME/bin/myprompt"
trong đó ~ / bin / myprompt là:
#!/usr/bin/env ruby
green = "\033[32m"
bold = "\033[1m"
underline = "\033[4m"
reset = "\033[0m"
home_regex = Regexp.new "^#{ENV["HOME"]}"
Dir.chdir ENV["PWD"]
out =
underline + bold + green +
`pwd`.gsub(home_regex, "~").chomp +
reset
if `git log 2>&1 | grep ^fatal`.chomp == ""
out += "#{underline}#{green} (#{`git branch | grep ^\* | sed s/^..//g`.chomp})#{reset}"
end
print out
Nó hoạt động tốt với hầu hết các phần, vấn đề duy nhất là khi tôi sử dụng các phím mũi tên để cuộn qua lịch sử lệnh, đôi khi lệnh được ghi qua dấu nhắc của tôi. Giả sử phiên sau:
~ $ pwd
/Users/Adrian
~ $ cd sibilant
~/sibilant (master) $ pwd
/Users/Adrian/sibilant
~/sibilant (master) $
Sau đó, tôi nhấn mũi tên lên để cuộn qua lịch sử lệnh. mỗi dòng hiển thị kết quả của một lần nhấn mũi tên:
~/sibilant (master) $ pwd
~/sibilant (master) $ cd sibilant
~/spwd
như bạn có thể thấy, lần cuối cùng tôi nhấn mũi tên, lệnh được viết trên dấu nhắc của tôi.
Có ai có kinh nghiệm này và / hoặc biết cách khắc phục nó?
myprompt
cho PS1 chứ? Tôi nhớ đã cố gắng làm một cái gì đó như thế trước đây.