창 A에서 새 창 B를 만들고 A에서 어떤 명령도 실행하지 않으면 B는 A와 동일한 비밀번호로 생성됩니다. 이것이 바로 제가 원하는 것입니다. 그러나 새 창을 만들 때 비밀번호를 일시적으로 변경하는 A(실제로 연결된 명령 3개의 별칭)에서 bash 명령을 실행하면 A에서 활성화하는 대신 바로 가기 키를 누르면 A의 비밀번호가 생성됩니다. B의 비밀번호는 제가 실행 중인 명령입니다.
1) 그러한 명령을 실행하기 전에 tmux가 pwd를 사용하여 새 창을 생성하도록 하는 방법이 있습니까? 2) 1)이 불가능할 경우 비밀번호를 보존하기 위해 명령을 실행하는 올바른 방법은 무엇입니까?
이 .tmux.conf와 함께 tmux 1.8을 사용하고 있습니다.
https://github.com/slnc/dotfiles/blob/master/.tmux.conf
감사해요
답변1
분할을 생성할 때 필요한 디렉터리를 수동으로 제공하기만 하면 됩니다.
:split-window -c "/dir/you/want"
예를 들어
<prefix>
, :
,split-window -c "/var/lib/apt"
설명하다
split-window
-c
크기, 문자열 보간 및 작업 디렉터리를 지정할 수 있는 다양한 옵션을 사용하는 분할을 생성하는 tmux 명령입니다 .
~에서man tmux | less '+/^\s*split-window'
split-window [-bdhvP] [-c start-directory] [-l size | -p percentage] [-t target-pane] [shell-command] [-F format] (alias: splitw)
대상 창을 분할하여 새 창을 만듭니다.
수평 분할의 경우 -h, 수직 분할의 경우 -va가 지정되지 않은 경우 -v가 가정됩니다.
-l 및 -p 옵션은 각각 행(세로 분할의 경우), 셀(가로 분할의 경우) 또는 백분율로 새 창의 크기를 지정합니다. -b 옵션을 사용하면 대상 창의 왼쪽이나 위에 새 창이 생성됩니다. 다른 모든 옵션은 new-window 명령과 의미가 동일합니다.
다음과 같은 명령을 바인딩할 수도 있습니다.
bind '"' split-window -v -c "$PWD" # Split panes horizontal
답변2
bind % split-window -h -c "#{pane_current_path}"
답변3
두 가지 문제가 있습니다.
tmux
현재 프로세스 그룹(ioctl에 의해 반환됨)에서 현재 작업 디렉토리를 가져오십시오tcgetpgrp(3)
.TIOCGPGRP
따라서 이와 같은 변수는#{pane_current_path}
항상 현재 실행 중인 명령의 임시 디렉토리 변경 사항을 반영합니다.tmux 버전 1.8은 에 대한 인수
#{variables}
의 어떤 것도 확장 하지 않습니다 . 확장을 사용하려고 하면 에 새 창이 열립니다 . 이것이 바뀌었다-c
split-window
/
1.8과 1.9 사이.
#{pane_title}
이스케이프 시퀀스를 사용하여 요청 시 업데이트할 수 있으므로 변수(별칭 )를 사용하여 #T
첫 번째 문제를 해결할 수 있습니다.
분할창이 처음 생성되면 해당 제목은 호스트 이름입니다. 창 제목은 OSC 제목 설정 순서를 통해 설정할 수 있습니다. 예:
$ printf '\033]2;My Title\033\\'
사용자 정의를 사용하여 PS1
이 시퀀스를 다음으로 보낼 수 있습니다 tmux
(xterm 헤더를 변경하는 유사한 트릭을 본 적이 있을 수 있음).
if [ -n "$TMUX" ] ; then
PS1='\[\e]2;$PWD\e\\\]'$PS1
fi
cd
이는 대화형 bash (또는 pushd
기타)에 응답하지만 프롬프트를 표시하지 않는 경우 bash 별칭을 포함한 다른 포그라운드 프로세스에는 응답하지 않습니다 .
그런 다음 키 바인딩을 tmux.conf
다음과 같이 변경합니다.
bind-key '"' split-window -c "#T"
하지만 최신 tmux 버전으로 업데이트해야 할 수도 있습니다.