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

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

new-window현재 내가 있는 디렉토리로 설정된 작업 디렉토리를 사용하여 열 수 있습니다 . 나는 사용하고있다다루기 힘든, 그게 중요하다면.

답변1

현재(1.9a) Tmux 매뉴얼 페이지에는 및를 -c start-directory포함한 일부 명령에 대한 선택적 인수가 나열되어 있습니다 . 또한 참조하는 형식 변수도 포함되어 있습니다 .new-windowsplit-windowpane_current_pathCurrent path if available

이들을 결합하면 현재 작업 디렉터리를 사용하여 새 창을 열 수 있습니다.
new-window -c "#{pane_current_path}"
현재 경로에 공백이 포함된 경우 따옴표가 필요합니다.

현재 창을 수직으로 분할하려면
split-window -c "#{pane_current_path}"
또는 를 사용하여 수평으로 분할하세요.
split-window -h -c "#{pane_current_path}"

새 분할 및 창을 열 때 현재 작업 디렉터리 를 사용하도록 키 바인딩을 기본으로 설정하려면 .tmux.conf.""

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

답변2

다음으로 시작됨멀티플렉서1.9 이 default-path옵션은 제거되었으므로 이 -c옵션을 new-window, 및 와 함께 사용해야 합니다 split-window(예: , 및 를 다시 바인딩 c하여 "포함 %)
-c '#{pane_current_path}'. 자세한 내용은 이 질문에 대한 다른 답변을 참조하세요.


관련 기능이 로그인되었습니다멀티플렉서2012년 2월 초 SVN 트렁크.멀티플렉서이 코드가 포함된 빌드는멀티플렉서호출된 키 바인딩은 new-window현재 작업 디렉토리가 현재 창의 활성 프로세스와 동일한 새 창을 생성합니다(세션 옵션이 비어 있는 경우 default-path이것이 기본값입니다). split-window바인딩을 통해 명령이 호출되면 명령에 의해 생성된 창도 마찬가지입니다.

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

다음 버전에서는 이 기능을 사용할 수 있습니다.멀티플렉서(1.7?).


그리고멀티플렉서1.4, 제가 주로 사용하는 것은

tmux neww

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

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

tmux set-option default-path "$PWD"

원하는 현재 작업 디렉터리가 이미 있는 셸에서(물론 어느 디렉터리에서나 이 작업을 수행할 수 있지만 값만 지정하면 됩니다).

null이 아닌 값으로 설정 되면 default-path명령줄 호출에서 현재 작업 디렉터리를 "상속"하는 대신 해당 값이 사용됩니다 tmux neww.

이것멀티플렉서자주하는 질문좀 더 복잡하기는 하지만 "현재 창과 동일한 디렉토리에서 새 창을 여는 방법"이라는 항목이 있습니다.

답변3

사용 new-window -c "#{pane_current_path}".

파일에 다음을 추가하여 ~/.tmux.conf파일을 영구적으로 만들 수 있습니다(가정).기본 키 바인딩):

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

설정 default-path삭제됨1.9(2014년 2월 출시)부터 시작합니다. 변경 사항 중 작성자는 -c "#{pane_current_path}"및 명령에서 또는를 사용할 것을 권장합니다.-c "$PWDnew-windowsplit-window

또 이렇게 대답했다질문이 중복되었습니다..

답변4

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에서 작동합니다. 주석 처리된 행 보기여기show-environment 명령이 없는 이전 버전의 tmux에 적합합니다.

관련 정보