Câu hỏi Tùy chỉnh chủ đề Oh My Zsh: lời nhắc dài biến mất / bị cắt


Tôi đã có một đi làm chủ đề Oh My Zsh của riêng tôi trước đó. Tất cả là tốt, ngoại trừ khi tôi gõ dòng dài trong dấu nhắc (bất kỳ dài hơn dòng được nhìn thấy dưới đây), dòng biến mất. Tuy nhiên, dòng xuất hiện lại nếu tôi thay đổi kích thước cửa sổ.

Có điều gì đó trong chủ đề của tôi đang gây ra điều này xảy ra không?

Nếu tôi nhập một ký tự bổ sung và sau đó xóa ký tự, con trỏ sẽ xuất hiện ở cạnh cửa sổ.

Bạn có thể xem mã cho chủ đề ở đây. Dưới đây là một chút tôi nghĩ chúng tôi quan tâm:

# Build the prompt
PROMPT='
' # Newline
PROMPT+='${style_user}%n' # Username
PROMPT+='${style_chars}@' # @
PROMPT+='${style_host}%m' # Host
PROMPT+='${style_chars}: ' # :
PROMPT+='${style_path}%c ' # Working directory
PROMPT+='$(git_custom_status)' # Git details
PROMPT+='
' # Newline
PROMPT+='${style_chars}\$${RESET} '

7
2017-11-24 23:21


gốc




Các câu trả lời:


Ngẫu nhiên, liên kết của bạn bị hỏng, làm nổi bật một trong những vấn đề với việc đăng liên kết tới mã thay vì mã - mọi người xem trong tương lai của câu hỏi của bạn không thể có được bức tranh đầy đủ.

Tôi nghĩ rằng vấn đề của bạn là các ký tự 'màu' bạn sử dụng nên được thoát trong một cặp %{...%}:

%{...%}
Include  a string as a literal escape sequence.  The string within the braces
should not change the cursor position.  Brace pairs can nest.

Sử dụng mới nhất của bạn cam kết github, Tôi không thấy vấn đề này - bạn đã sửa chưa? Tuy nhiên, tôi thấy một số vấn đề với vị trí con trỏ và vẽ đường, đặc biệt với TAB. Khi nhấn TAB, con trỏ được di chuyển lên một dòng:

enter image description here Đã nhấn CHUYỂN HƯỚNG đây. enter image description here Đã nhấn CHUYỂN HƯỚNG đây. enter image description here

Các PROMPT đang được vẽ lại 'lên' một dòng mỗi lần. Điều này được cố định bằng cách đóng gói các mã màu bên trong %{...%}:

# Solarized Dark colour scheme
BOLD="%{$(tput bold)%}"
RESET="%{$(tput sgr0)%}"
SOLAR_YELLOW="%{$(tput setaf 136)%}"
SOLAR_ORANGE="%{$(tput setaf 166)%}"
SOLAR_RED="%{$(tput setaf 124)%}"
SOLAR_MAGENTA="%{$(tput setaf 125)%}"
SOLAR_VIOLET="%{$(tput setaf 61)%}"
SOLAR_BLUE="%{$(tput setaf 33)%}"
SOLAR_CYAN="%{$(tput setaf 37)%}"
SOLAR_GREEN="%{$(tput setaf 64)%}"
SOLAR_WHITE="%{$(tput setaf 254)%}"

Tôi không chắc chắn 100% nếu không có bản gốc ~/.zshrc, nhưng điều này sẽ cải thiện lời nhắc của bạn một chút. :)

Ngoài màu cam, bạn cũng có thể sử dụng thiết bị đầu cuối Solarized hồ sơ và zsh  colors, cái nào có thể di động hơn. Tôi không thể có được màu da cam mà không cần tput, Tuy nhiên.

#autoload colors && colors
#SOLAR_YELLOW="%{$fg[yellow]%}"
#SOLAR_ORANGE="%{$(tput setaf 166)%}"
#SOLAR_RED="%{$fg[red]%}"
#SOLAR_MAGENTA="%{$fg[magenta]%}"
#SOLAR_VIOLET="%{$fg_bold[magenta]%}"
#SOLAR_BLUE="%{$fg[blue]%}"
#SOLAR_CYAN="%{$fg[cyan]%}"
#SOLAR_GREEN="%{$fg[green]%}"
#SOLAR_WHITE="%{$fg[white]%}"

11
2018-01-06 05:16



Tôi có cần phải thoát khỏi các biến khác nữa không, hay chỉ là màu sắc? Ví dụ, tôi bí danh màu sắc cho các biến khác như: style_path="${RESET}${SOLAR_GREEN}"
@OliverJosephAsh Cung cấp nó đã thoát một vài nơi, bạn tốt - tôi đã trốn thoát trong thời gian sớm nhất có thể (SOLAR_<COLOR>), vì thế style_path sẽ mở rộng đến "%{$(tput sgr0)%}%{${tput setaf 64%}", với cả hai biến đã thoát - đã thoát khỏi các biến 'cao hơn' sẽ không đau, nhưng tôi không nghĩ có lợi thế nào :) - simont