같은 디렉토리에서 새 탭을 엽니 다


41

/ very / cool / and / deeply / nested / folder에 있다고 가정하십시오. 그리고 같은 폴더에서 새 터미널 탭을 열려고합니다.

어떻게 하시겠습니까?

Mac OS와 Zsh를 사용합니다.

답변:


62

사용 아 - 내 - zsh을 하고 추가 'OSX'플러그인 당신의 ~ / .zshrc 같은에서 :

plugins=(osx)

OSX의 터미널 앱을 사용하는 경우 terminalapp플러그인도 추가해야합니다 . credit

plugins=(osx terminalapp)

iTerm을 사용하는 경우 구성 옵션을 설정해야합니다 ( 작동하려면 zsh 플러그인이 필요하지 않을 수도 있음 ). credit

환경 설정> 프로파일> 기본값> 일반> 작업 디렉토리> 이전 세션 디렉토리 재사용 옵션

iTerm2 환경 설정 패널을 업데이트하여 이전 세션 디렉토리를 재사용합니다.

그게 당신이해야 할 전부입니다!


1
이것은 iTerm에서도 작동합니까?
ahmy

1
@ahmy는 다음과 같이 보입니다 : github.com/robbyrussell/oh-my-zsh/blob/master/plugins/osx/…
philfreo

2
콘솔에서 프로세스를 실행하지 않는 한 이것은 나를 위해 작동합니다. 프로세스가 있고 rails실행 중이라고 말하고 command-n을 통해 새 창을 열려고하면 홈 디렉토리로 돌아갑니다.
YWCA Hello

@YWCAHello이 문제에 대한 해결책을 찾았습니까?
Michał Miszczyszyn

@Miszy 나는 바닐라 배쉬로 다시 옮겼습니다 : /
YWCA Hello

23

Mac OS X Lion에서 사용 가능한 다른 옵션은 내장 기능을 사용하는 것입니다. 현재 디렉토리를 찾기 위해 '이스케이프 시퀀스'를 사용합니다. 내 .zshrc에서 다음 명령을 사용하면 작동합니다.

precmd () {print -Pn "\e]2; %~/ \a"}
preexec () {print -Pn "\e]2; %~/ \a"}

PS1Bash의 경우이 위키 에서 사용할 수도 있습니다 .

export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

\e]2;제목 표시 줄에 인쇄 할 이스케이프 시퀀스는 어디에 있습니까 ? 보인다 Terminal.app 거기에서 해당 정보를 얻고있다.

추가 정보:


또한 oh-my-zsh 가 기본적으로 이것을 가지고 있다고 생각 합니다. 나는 이것을 1 주일 정도 사용해 왔으며 거의 ​​즉시 작동합니다.
Tim

Mac OS X Lion 10.7부터 터미널은 제목 표시 줄에 "프록시"아이콘을 사용하여 작업 디렉토리를 표시하고 동일한 디렉토리에 새 터미널을 생성하는 옵션이 있으며 터미널 재개를 지원합니다. 편의상 터미널은 창 / 탭 제목의 내용을보고 유효한 경로 이름이 포함되어 있는지 확인합니다. 그러나 백분율 인코딩을 통해 유효한 모든 경로 이름을 처리 할 수 /etc/bashrc있는 file:URL을 사용하여 작업 디렉토리의 터미널에 알리는 새로운 이스케이프 코드도 ​​지원합니다 (창 / 탭 제목에는 ASCII 문자의 하위 집합 만 포함 할 수 있음) ).
Chris 페이지

2
작업 디렉토리를 설정하기위한 이스케이프 시퀀스는 제목 (OSC)을 0-2 대신 코드 7로 설정하는 것과 동일한 기본 코드입니다.\e]7;file://hostname/percent-encoded-pathname\a
Chris Page

3
precmd 및 preexec를 사용하는 이유는 무엇입니까? 왜 안돼 chpwd () {print -Pn "\e]2; %~/ \a"}?
Nick

1
제목 표시 줄이 어떻게 업데이트되는지 이해하지만 이전 탭과 동일한 디렉토리에서 새 탭이 어떻게 열리는 지 이해하지 못합니다.
mareoraft

3

이것은 bash에서 사용하고 zsh에서도 작동하는 매우 간단한 버전입니다. 모든 명령 (IMO가 너무 많이 손상되지 않음) 후에 현재 폴더를 파일에 저장하고 저장된 현재 폴더에서 새 터미널을 엽니 다.

.zshrc에 다음을 추가하십시오.

# emulate bash PROMPT_COMMAND (only for zsh)
precmd() { eval "$PROMPT_COMMAND" }
# open new terminal in same dir
PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
[[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"

이것은 멋지지만 실제로 업데이트하려면 탭에서 명령을 실행해야합니다. 드문 경우이지만 예기치 않은 동작이 발생할 수 있습니다. 명령을 실행하는 대신 탭을 전환 할 때 트리거되는 다른 기능이 있습니까?
mareoraft

1

gdirs 는 거의 그것을 수행하는 방법 인 것 같습니다 : 새 탭, 그런 다음 gdirs는 깊은 디렉토리와 짜잔을 선택합니다. 첫 번째 아이디어는 모든 탭에서 디렉토리 스택을 공유하고 새 탭 다음에 cd ~ 1을 수행하는 것이었지만 zsh의 각 인스턴스가 자체적으로 유지하는 것처럼 그렇게하는 방법을 찾을 수 없습니다. 히스토리 공유는 공통 파일을 통해 이루어 지므로 여기에서도 가능합니다 ...


0

이것이 bash에서 수행하는 방법입니다.

이 셸 스크립트는 Terminal.app에 새 탭을 열고 현재 디렉토리로 전환하도록 (말 그대로 조용한 Applescript를 사용하여) 알려줍니다.

#!/bin/bash
osascript -e 'tell application "Terminal"' \
-e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' \
-e "do script with command \"cd `pwd`;clear\" in selected tab of the front window" \
-e 'end tell' &> /dev/null

… 위의 셸 스크립트를 $PATH/ usr / local / bin 의 디렉토리에 넣고 실행 가능한지 확인하십시오.

$ chmod +x /usr/local/bin/nt

( 소스 )


Mac OS X Lion 10.7부터 터미널은 기본적으로 이전 탭과 동일한 작업 디렉토리에서 새 탭을 시작합니다. 따라서 지금 탭을 작성하기 만하면됩니다. (bash를 사용하는 경우. 다른 쉘을 사용하는 경우 / etc / bashrc의 코드에서 터미널에 현재 작업 디렉토리를 알려주는 방법을 찾으십시오.)
Chris Page

0

구성 파일을 변경하거나 새 플러그인을 설치하지 않고 지금이 새 탭을 열어야하는 경우 다음을 실행하십시오.

pwd | pbcopy

그런 다음 새 터미널 탭을 수동으로 열고 (⌘T 사용) 새 탭에서 :

cd "`pbpaste`"

경고 : 시스템 클립 보드의 내용을 덮어 씁니다.


클립 보드를 덮어 쓰지 않는 대안으로 더 긴 방법 :

pwd > $TMPDIR/wd

새 탭을여십시오.

cd "$(cat $TMPDIR/wd)"
rm -f $TMPDIR/wd

0

위의 Pieter의 의견에 따르면 plugins=(git osx)플러그인이 설치되면 입력하면 tab현재 디렉토리에 새 탭이 열립니다.


0

새 탭을 열 때 디렉토리가 자동으로 변경되도록하려면 dirpersist 플러그인을 사용하십시오 .

osx 플러그인은 마지막 디렉토리 만 저장하지만 tab새 탭을 열려면 명령을 실행해야하지만 항상 가능한 것은 아닙니다 (예 : 현재 탭에서 무언가를 실행중인 경우).


0

.zshrc에 terminalapp를 추가해도 효과가 없었으므로 플러그인을 찾아서 ~/.oh-my-zsh/plugins/terminalapp알려줍니다.

# This file is intentionally empty.
#
# The terminalapp plugin is deprecated and may be removed in a future release.
# Its functionality has been folded in to the core lib/termsupport.zsh, which
# is loaded for all users. You can remove terminalapp from your $plugins list
# once all your systems are updated to the current version of Oh My Zsh.

0

같은 폴더에 이미 새 탭이 열립니다 (Cmd + T). 새 창 (Cmd + N)의 경우 Pieter의 솔루션이 적합합니다.

환경 설정> 프로파일> 기본값> 일반> 작업 디렉토리> 이전 세션 디렉토리 재사용 옵션

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.