powerline10k/zsh에서 더 짧은 경로 힌트를 얻는 방법은 무엇입니까?

powerline10k/zsh에서 더 짧은 경로 힌트를 얻는 방법은 무엇입니까?

모든 사람!

내 iterm2(zsh, oh-my.zsh 및 powerline2 사용) 터미널에서 특정 디렉터리로 이동하면 다음과 같은 프롬프트가 표시됩니다.

$ pokemon/electric/pichu/pikachu/raichu

나는 다음과 같이 더 짧지만 여전히 완전한 경로 표현을 원합니다.

$ P/E/P/P/raichu

이 구성을 본 적이 있지만 설정할 수 없었습니다.

======편집======그래픽 예: 여기에 이미지 설명을 입력하세요.

도울 수 있니?

미리 감사드립니다!

답변1

다음을 수행할 수 있습니다.

$ set -o extendedglob -o promptsubst
$ PS1='${${${PWD/#%(#b)$HOME(|\/*)/

답변2

  1. 파일 을 편집해야 합니다 .p10k.zsh(제 경우에는 zsh/oh-my-zsh/iTerm에서 powerlevel10k를 사용하고 있습니다).
    nano .p10k.zsh
    
    (또는 원하는 다른 편집기를 사용하십시오).
  2. 행을 검색 typeset -g POWERLEVEL9K_SHORTEN_STRATEGY 하고 다음과 같은 값을 추가합니다.
    typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_from_right
    
  3. 다음 줄을 검색하여 typeset -g POWERLEVEL9K_SHORTEN_DELIMITER 공백으로 설정합니다.
    typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
    
  4. 마지막으로 라인을 검색 typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH 하고 값 1을 추가합니다.
    typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
    

다음과 같은 내용을 볼 수 있어야 합니다.
디렉터리가 "~/D/I/L/[/3/1/Workbook"으로 나타나는 프롬프트의 스크린샷


표준 zsh 테마(powerlevel10k 테마 없이)를 사용하는 경우 다음을 시도해 볼 수 있습니다.

다음에 추가 ~/.zshrc:

setopt prompt_subst
PROMPT='\$ /$(printf "%c/" ${(s./.)PWD:h})${PWD:t} '
  • (s./.)– 에서 경로를 분할합니다 /.
  • printf "%c/"– 각 디렉토리 조각의 첫 번째 문자를 인쇄합니다.
  • ${PWD:h}– 현재 디렉토리의 "헤드", 즉 마지막 요소를 제외한 모든 것.
  • ${PWD:t}– 디렉토리 경로의 "tail"/마지막 요소입니다.

에서 발췌Guerfoor의 답변도착하다물고기 기능은 프롬프트_pwd이지만 zsh에서는요?

답변3

링크를 생성할 수 있습니다.

ln -s pokemon P

cd pokemon그런 다음 or을 수행하면 cd P동일한 디렉토리에 있게 됩니다.

답변4

나는 이 테스트를 했다:

pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print $i}}'
result : /opt/tools/intel/oneapi

그런 다음 이:

pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}'
result : /o/t/i/o

따라서 bashrc를 다음과 같이 수정해 볼 수 있습니다.

function generate_pwd { 
pwd | awk -F/ 'BEGIN{ ORS="/" } END{for (i=1; i<=NF; i++){print substr($i,1,1)}}' 
}
export PS1="\$(generate_pwd) => "

잘 작동합니다.

관련 정보