ZSH 셸 명령줄에서 경로 표시줄을 일시적으로 숨기시겠습니까?

ZSH 셸 명령줄에서 경로 표시줄을 일시적으로 숨기시겠습니까?

일부 구성 파일에서 영구적으로 비활성화하는 것 외에도 명령 프롬프트 전에 디렉토리 경로의 가시성을 일시적으로 숨기도록 전환하는 바로 가기 또는 무언가가 있습니까?

내 말은, ZSH는 전체 경로가 길 때 디렉터리 이름을 축약하는 것 같지만 현재 디렉터리의 상위 디렉터리에 대해서만 이 작업을 수행하는 것처럼 보이며 현재 디렉터리의 이름이 다음과 같은 경우 명령을 입력할 공간이 거의 없습니다. 긴.

여기에 이미지 설명을 입력하세요.

답변1

다음에서 이 작업을 수행할 수 있습니다 ~/.zshrc.

realPS1="$PS1"
changed=false

changePS1() {

   $changed && {

      PS1="%n (normal) in %~> "
      #Or
      PS1="$realPS1"

      changed=false
      : # <-- It might be not necessary add this `:`. This one 
        #represents a zero-status code (or successful).  

   } || {
      PS1="%n (hidden)> "
      changed=true
   }
}

bindkey -s "^H" 'changePS1^M'

Ctrl + H 위 코드는 함수를 실행하기 위한 단축키(바인드키 사용)를 생성합니다 changePS1. 따라서 기본적으로 프롬프트를 Ctrl + H 활성화 하고 다시 누르면 프롬프트가 활성화됩니다 .hidden Ctrl + H normal

$PS1할당해야 하는 값 에 대해귀하의 필요에 따라. 예를 들어, 이 줄은 PS1="%n (normal) in %~> "다음 프롬프트를 표시합니다.

edgar (normal) in ~/Documents/Gitlab/Linux_programming>

%n사용자 이름과 %~현재 작업 디렉터리의 상대 경로는 어디에 있습니까?

그러나 실제 $PS1(행 realPS1="$PS1")을 백업하고 PS1="$realPS1"대신 사용할 수 있습니다.PS1="%n (normal) in %~> "

그리고 PS1="%n (hidden)> "다음 프롬프트가 표시됩니다:

edgar (hidden)>

따라서 사용자 PS1정의 힌트를 사용하여 변수를 할당해야 하지만 반드시 %~경로 인쇄를 피할 필요는 없습니다.

관련 정보