새 탭에서 현재 디렉토리를 여는 방법은 무엇입니까?

새 탭에서 현재 디렉토리를 여는 방법은 무엇입니까?

내 환경

  • macOS의 Terminal.app 2.9.4
  • zsh 5.7.1

bash를 사용할 때는 터미널이 현재 디렉터리를 새 탭에서 열 수 있었지만 zsh로 변경했기 때문에 그렇게 할 수 없습니다.

응용 프로그램 설정에서 "동일 작업 디렉터리"로 설정되어 있어도 마찬가지입니다.

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

.zshrc내가 뭔가를 쓴다면, 아니면 .zprofile그것을 할 것인가?

답변1

여기에서 해결책을 찾았습니다.https://blog.callstack.io/supercharge-your-terminal-with-zsh-8b369d689770

# Open new tabs in same directory
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then
  function chpwd {
    printf '\e]7;%s\a' "file://$HOSTNAME${PWD// /%20}"
  }
  chpwd
fi

경로에서 수행되는 유일한 백분율 인코딩은 공백을 "%20"으로 바꾸는 것입니다. 이는 보다 강력한 인코딩으로 대체되어야 합니다.

답변2

파란색 텍스트를 클릭하세요.

현재 작업 디렉토리를 터미널에 알리는 방법을 보여주는 팝업이 있는 터미널 기본 설정 창

따라서 터미널이 현재 위치를 알 수 있도록 이 작은 이스케이프 시퀀스를 프롬프트에 추가하기만 하면 됩니다. 단순한!

또는 이것이 다소 난해하다고 생각한다면 bash가 이를 어떻게 수행하는지 살펴보겠습니다. 검사 결과 man bashbash가 대화형 로그인 셸(터미널 창이나 탭을 열 때 기본값이어야 함)로 호출될 때 참조하는 파일 중 하나는 /etc/profile.

잠깐 살펴보면 /etc/profile로딩 중이라는 것을 알 수 있습니다 /etc/bashrc.

내부를 살펴보면 /etc/bashrc로드를 시도하고 있음을 알 수 있습니다 /etc/bashrc_$TERM_PROGRAM.

> echo $TERM_PROGRAM
Apple_Terminal

나중에 less /etc/bashrc_Apple_Terminal최우수상이 있을 거예요! 상단 근처:

# Tell the terminal about the current working directory at each prompt.

다음은 이를 수행하는 함수로, (bash) 프롬프트에 포함될 수 있습니다. 합법성에 대해 완전히 확신할 수 없기 때문에 여기서는 함수를 중복하지 않을 것입니다. 하지만 합리적으로 사용하기에 충분히 간단하다고 믿기 때문에 함수의 마지막 줄을 포함하겠습니다.

printf '\e]7;%s\a' "file://$HOSTNAME$url_path"

이것은 기본적으로 기본 설정 창 팝업의 신비한 이스케이프 시퀀스입니다. 함수의 나머지 부분은 전적으로 $url_path필요한 Percent_encoding으로 변수를 설정하는 것입니다. 이를 zsh로 변환하거나 외부 bash 스크립트로 추출하여 호출해야 합니다. 하지만 bash 인스턴스를 매번 시작할 때마다 프롬프트가 약간 느려질 수 있습니다.

답변3

다음 키보드 단축키를 수행하면 됩니다.

cmd + ctrl + o

관련 정보