zsh 프롬프트에서 경로 단축

zsh 프롬프트에서 경로 단축

BashPROMPT_DIRTRIM내가 설정할 때와 같은 옵션이 있고 PROMPT_DIRTRIM=3다음과 같은 긴 경로가 있습니다.

user@computer: /this/is/some/silly/path

다음과 같이 표시됩니다.

user@computer: .../some/silly/path

비슷한 옵션이 있나요 zsh?

답변1

bashinclude와 유사한 효과를 얻으려면 ...다음을 사용해 보십시오.

%(4~|.../%3~|%~)

변수 위치 ( 구성에서 이름이 지정 PROMPT될 수도 있음 ) 이는 경로의 길이가 최소 4개 요소인지 확인하고( ), true이면 마지막 3개 요소 중 일부 점을 인쇄하고( ), 그렇지 않으면 전체 경로( )를 인쇄합니다.PS1%~%(4~|true|false).../%3~%~


나는 이것이 bash홈 디렉토리의 경로를 여러 가지 방법으로 단축하는 것으로 나타났습니다. 예를 들면 다음과 같습니다.

~/.../some/long/path

비슷한 효과를 얻으려면 다음을 사용할 수 있습니다.

%(5~|%-1~/…/%3~|%4~)

이는 경로의 길이가 최소 5개 요소인지 확인하고, 이 경우 첫 번째 요소( %-1~), 일부 지점( /…/) 및 마지막 3개 요소를 인쇄합니다. 이는 홈 디렉터리에 없는 경로와 정확히 동일하지 않으며 시작 부분에도 첫 번째 요소가 있으며 bash이 경우 점만 인쇄됩니다. 그래서

/this/…/some/silly/path

바꾸다

.../some/silly/path

그러나 그것이 반드시 나쁜 것은 아닙니다.


대신 %~에 사용할 수도 있습니다 %d(또는 PROMPT현재 이미 사용하고 있을 수도 있습니다 %d). 차이점은 %d전체 절대 경로를 표시하는 반면 %~"이름이 지정된 디렉터리"의 약어를 표시한다는 것입니다. 예: /home/youruserbe ~/home/otheruserbe ~otheruser. 단축의 기준으로 전체 경로를 사용하려면 모든 항목 ~d.

답변2

여기에 제공된 다른 답변 외에도 %<주어진 수의 사용 경로를자를 수도 있습니다수치. %<n>d개별 경로 요소 자체가 분명히 길 수 있으므로 를 사용하는 것보다 이것이 더 좋습니다 . 를 사용하면 %<최대 프롬프트 길이를 더 예측할 수 있게 됩니다.

예를 들어, 물결표 확장( %~)을 사용하여 경로 요소를 왼쪽에서 15자로 자르고 제거된 문자를 다음으로 바꾸려면 ..:

PROMPT='%n@%m:%15<..<%~%<<%# '

이것은 Zsh 매뉴얼에 문서화되어 있습니다.급속한 확장, 페이지 끝에 있습니다.

답변3

바라보다http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html또는man zshmisc

%d
%/
Current working directory. If an integer follows the ‘%’, it specifies a number of trailing components of the current working directory to show

%~
As %d and %/, but if the current working directory starts with $HOME, that part is replaced by a ‘~’.

따라서 와 같은 것을 얻으려면 or 를 PROMPT_DIRTRIM=3사용할 수 있습니다 .%3d%3~

% mkdir -p ~/a/b/c/d
% cd ~/a/b/c/d
% PS1='%n@%m: %3d%% '
user@computer: b/c/d% 

답변4

당신은 그것을 사용할 수 있습니다%3d 급속한 확장:

/home/cuonglm/.config/fish/functions $ PS1='%3d $ '
.config/fish/functions $

일반적인 형식은 표시할 현재 경로의 후행 구성 요소를 지정하는 %d양의 정수가 뒤에 오는 경우 0은 전체 경로가 표시됨을 의미하고 음의 정수는 표시할 선행 경로를 나타냅니다.d

.config/fish/functions $ PS1='%-2d $ '
/home/cuonglm $

관련 정보