Các ^[]
tiếng ồn đến từ ký tự điều khiển thiết bị đầu cuối khác nhau tại dấu nhắc shell của bạn. Hãy thử echo $PS1
xem toàn bộ chuỗi và thử ví dụ export PS1='$ '
để thấy rằng một chuỗi nhắc đơn giản hơn sẽ loại bỏ vấn đề cụ thể đó.
Đối với mã hóa, bạn có thể thử tạo utf-8 mã hóa ưa thích của mình:
(prefer-coding-system 'utf-8)
Thiết lập lời nhắc
Emacs đặt biến INSIDE_EMACS để bạn có thể tạo .bash_profile chỉ đặt PS1 khi chạy trong Emacs.
Kiểm tra trên máy của tôi, dòng đầu tiên của dấu nhắc có các ký tự điều khiển có vấn đề. Tôi đã tạo một ~ / .bash_profile bằng cái này.
if [ -n "$INSIDE_EMACS" ]; then
export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
fi
Điều này đặt lời nhắc dựa trên những gì git-bash được đặt theo mặc định, nhưng tôi đã xóa dòng đầu tiên (tối đa đến ngắt dòng \ n). Tôi cũng đã xóa $ MSYSTEM, đặt MINGW64 trong dấu nhắc - tôi không cần phải thấy điều đó. Những gì còn lại là user @ host, thư mục hiện tại và git repo. Các ký tự điều khiển đặt màu mà Emacs hiển thị đúng cho tôi. (Để biết chi tiết về cách thiết lập lời nhắc của bạn, hãy tham khảo hướng dẫn sử dụng bash .)
Trong Emacs tôi đặt shell thành git-bash:
(setq explicit-shell-file-name "C:/git-for-windows/bin/bash.exe")
(setq explicit-bash.exe-args '("--login" "-i"))
Với thiết lập này, tôi vẫn thấy thông báo lỗi ioctl ban đầu, nhưng nếu không thì mọi thứ hoạt động như mong đợi và mã hóa là utf-8.
MĂĄrton
nên đọcMárton
)