zsh 프롬프트에서 경로 단축


18

BashPROMPT_DIRTRIM옵션 이 있습니다 (예 : 설정 PROMPT_DIRTRIM=3하면 다음과 같은 긴 경로).

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

대신 다음과 같이 표시됩니다.

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

비슷한 옵션이 zsh있습니까?

답변:


22

bash포함한 유사한 효과를 얻으려면 다음 ...을 시도하십시오.

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

경로의 길이가 4 요소 이상인지 확인하고 ( %(4~|true|false)true) 마지막 3 가지 요소가있는 점을 인쇄하고 ( .../%3~그렇지 않으면 전체 경로가 인쇄 됨) %~.


bash예를 들어 홈 디렉토리의 경로가 다르게 단축 되는 것으로 나타났습니다 .

~/.../some/long/path

비슷한 효과를 얻으려면 다음을 사용하십시오.

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

경로가 5 개보다 긴지 여부를 확인하여 첫 번째 요소 ( %-1~), 일부 점 ( /…/) 및 마지막 3 개 요소를 인쇄합니다. 홈 디렉토리에없는 경로와 정확히 동일하지는 않지만 처음에는 첫 번째 요소가 있지만 bash그 경우 점을 인쇄합니다. 그래서

/this/…/some/silly/path

대신에

.../some/silly/path

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


1
첫 번째 버전이 더 좋지만 대신 대신로 표시 ~/a/b됩니다 . 이를 해결하기 위해을 사용할 수 있습니다 . .../a/b~/a/b%(5~|…/%3~|%~)
momar

zsh를 처음 접하는 사람들 (예 : 나와 같은)의 경우 다음과 같은 PROMPT환경 변수 와 함께이 구문을 사용하려고합니다 .zprofile.EXPORT PROMPT="%(5~|%-1~/…/%3~|%4~)"
Ryan H.

1
@RyanH. 고마워, 내 대답을 다시 읽고 나는 언급하지 않았으며,이 설정을해야 할 곳을 알았습니다. 나는 그것을 고쳐야 할 것이다. 귀하의 의견에 대한 두 가지 작은 것 : 대화 형 셸 세션 설정이 이루어져야하며 .zshrc실제로는 export셸 내부 매개 변수 가 필요하지 않습니다 PROMPT.
Adaephon

@Adaephon 정보를 주셔서 감사합니다. 내가 고칠 것이다! :)
Ryan H.

8

여기에 주어진 다른 답변 외에도 %<주어진 문자 수의 경로를자를 수 있습니다 . 나는 이것을 사용하는 것보다 선호된다.%<n>d개별 경로 요소 자체가 상당히 길기 때문에을 . 를 사용 %<하면 훨씬 더 예측 가능한 최대 프롬프트 길이를 얻을 수 있습니다.

예를 들어 물결표 확장 ( %~)이 15자인 경로 요소를 왼쪽으로 자르고 제거 된 문자를로 바꾸 ..려면 다음과 같이 할 수 있습니다.

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

이 내용은 페이지 끝 오른쪽 에있는 Zsh 설명서의 프롬프트 확장 아래에 설명되어 있습니다.


4

%3d 프롬프트 확장을 사용할 수 있습니다 .

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

일반적인 형식은 %d다음과 같이 양의 정수가 따라 오면 d현재 경로를 표시 할 후행 구성 요소를 지정하고, 0은 전체 경로를 표시하고, 음의 정수는 표시 할 선행 경로를 의미합니다.

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

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 ‘~’.

그래서 비슷한 무언가를 얻을 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% 

그러나 이것은 bash와 같이 "..."를 표시하지 않습니다.
Elronnd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.