tmux의 현재 디렉토리에서 새 창을 만드는 방법은 무엇입니까? 디렉토리로 설정된

new-window작업 디렉토리가 현재있는 디렉토리로 설정된 상태에서 파일을 열 수 있습니까? 중요한 경우 zsh를 사용 하고 있습니다.



답변

부터 TMUX 1.9 default-path당신이 사용할 필요가 있으므로, 옵션은 제거 -c와 옵션 new-window, 그리고 split-window합니다 (리 바인딩에 의해 예를 c, "그리고 %바인딩을 포함합니다
-c '#{pane_current_path}'). 자세한 내용은이 질문에 대한 다른 답변을 참조하십시오.


관련 기능은 2012 년 2 월 초에 tmux SVN 트렁크에 상주 했습니다 . 이 코드를 포함하는 tmux 빌드에서, 호출하는 tmux 키 바인딩 new-windowdefault-path세션 의 한 현재 세션 의 활성 프로세스와 동일한 현재 작업 디렉토리가있는 새 창을 만듭니다. 옵션은 비어 있으며 기본적으로 사용됩니다. split-window바인딩을 통해 호출 될 때 명령으로 작성된 분할 창에 대해서도 마찬가지입니다 .

이것은 특수한 플랫폼 특정 코드를 사용하므로 현재 Darwin (OS X), FreeBSD, Linux, OpenBSD 및 Solaris와 같은 특정 OS 만 지원됩니다.

이것은 tmux (1.7?) 의 다음 릴리스에서 사용 가능해야합니다 .


TMUX 1.4, 나는 대개 사용

tmux neww

원하는 현재 작업 디렉토리가 이미있는 쉘에서.

그러나 동일한 현재 작업 디렉토리로 많은 창을 만들어야 할 것으로 예상되는 경우 (또는 일반적인 <prefix> c키 바인딩으로 창을 시작할 수 있기를 원합니다 ) default-path세션 옵션을 통해 설정하십시오

tmux set-option default-path "$PWD"

원하는 현재 작업 디렉토리가 이미있는 쉘에서 (명확하게 모든 디렉토리에서 수행하고 대신 값을 지정할 수 있음).

경우 default-path비어 있지 않은 값으로 설정되어, 그 값은 대신 명령 줄 호출에서 “상속”현재 작업 디렉토리로 사용됩니다 tmux neww.

TMUX의 질문은 제목의 항목이 다른 접근 방식을 설명합니다 “나는 현재 창 같은 디렉토리에 새 창을 열 수 있습니까?”; 그래도 조금 복잡합니다.


답변

현재 (1.9a) Tmux 매뉴얼 페이지에는 및를 -c start-directory포함한 일부 명령에 대한 선택적 매개 변수가 나열 new-window되어 split-window있습니다. 또한 형식 변수를 포함 pane_current_path합니다
Current path if available.

이들을 결합하여 현재 작업 디렉토리에 새 창을 열 수
new-window -c "#{pane_current_path}"
있습니다. 현재 경로에 공백이있는 경우 인용이 필요합니다.

현재 창을 세로로 나누려면
split-window -c "#{pane_current_path}"
또는 가로 나누기를 사용하십시오.
split-window -h -c "#{pane_current_path}"

키 바인딩이 기본적으로 현재 작업 디렉토리를 사용하여 새 분할 및 창을 열도록하려면 다음을에 추가하십시오 .tmux.conf. "주변 따옴표는 문자열을 시작하는 것이 아니라 바인딩 안 TMUX을 알려주는 것입니다 "키를 누릅니다.

bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

답변

그렇습니다 new-window -c "#{pane_current_path}". 다음을 추가하여 ~/.tmux.conf영구적으로 만들 수 있습니다 (기본 키 바인딩 가정).

bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

default-path경로 설정되었다 제거 중 하나를 사용하여 해당 커밋 메시지에서 권장하는 업스트림 코드와 TMUX 저자에서 -c "#{pane_current_path}"또는 -c "$PWDnew-windowsplit-window명령.

나는 또한이 중복 질문 에 대답 했다 .


답변

최신 버전의 tmux (v1.8, v1.7에서도) :

tmux new-window -c "$PWD"

답변

다른 답변은 바인딩 (특히 tmux split-window -c) 으로 넣으려고하면 작동하지 않습니다 . 그러나 나는 새로운 창과 분할 모두에서 작동하는 1 년 이상 동안 사용해 온 자체 솔루션을 구성했습니다.

~/.bashrc:

PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'

~/.tmux.conf:

unbind-key c
bind-key c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key C new-window

bind-key - run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key | run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"

적어도 $ (tmux -V) 1.8에서 작동합니다. 아웃 주석 라인을 참조하십시오 여기 쇼 – 환경 명령을하지 않는 이전 tmuxes 일하는 버전.


답변

tmux는 버전 1.8에서이를 수행했지만 1.9에서는이 기능이 -c플래그 사용을 위해 제거되었습니다 .

이것은 해결 될 수 있지만 다시 바인딩 할 수 있지만 new-window다른 것을 실행하려는 경우 너무 장황 해집니다. 입력하는 대신 입력 하고 싶지 않은 neww man tmux입력 neww -c "#{pane_current_path}" man tmux해야합니다.

tmux에 적절한 스크립트 언어를 추가하여 별칭을 사용하고 ‘모드’, 변수, 루프 등에서 여러 명령을 바인딩 할 수 있도록 tmux (저는 저자입니다)의 모드가 있습니다. : 현재 창에서 새 창과 창이 열립니다.

여기 소스에서 빌드 할 수 있습니다 : http://ershov.github.io/tmux/