new-window
작업 디렉토리가 현재있는 디렉토리로 설정된 상태에서 파일을 열 수 있습니까? 중요한 경우 zsh를 사용 하고 있습니다.
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-window
은 default-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의 질문은 제목의 항목이 다른 접근 방식을 설명합니다 "나는 현재 창 같은 디렉토리에 새 창을 열 수 있습니까?"; 그래도 조금 복잡합니다.
/proc/PID/cwd
Linux)에서는 가능). tmux FAQ 항목 에 부분 해결책이 있을 수 있습니다 (프롬프트가 인쇄 될 때 쉘에 cwd 레코드를 기록한 다음 기록 된 디렉토리에서 새 쉘을 시작하는 키를 바인딩 함).
default-path
세션 옵션 값 (설정된 경우)을 사용합니다. TMUX 자주 묻는 질문은 현재 윈도우의 쉘 실행의 CWD에 새 창을 시작하는 키 바인딩 할 수있는 방법에 대해 설명하는 항목이있다 ( "나는 현재 창 같은 디렉토리에 새 창을 열 수 있습니다 어떻게?") 그러나 방법은 상당히 복잡합니다. split-window
및 new-session
대신에 동일하게 수행 할 수 있습니다 neww
.
현재 (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}"
prefix
- :
, 그리고 다음을 입력합니다source ~/.tmux.conf
tmux source-file .tmux.conf
.
그렇습니다 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 "$PWD
에 new-window
와 split-window
명령.
다른 답변은 바인딩 (특히 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/
<prefix>c
기본 쉘 인스턴스의 작업 디렉토리를 읽을 수 (있는 경우) 및 설정default-path
을 실행하기 전에이new-window
. 또는 너무 많은 tmux 를 물어 보십시오 :)