tmux 상태 줄 및 현재 경로 형식

tmux 상태 줄 및 현재 경로 형식

멀티플렉서#{pane_current_path}상태 표시줄에 현재 창의 이름 으로 사용할 수 있는 옵션이 있습니다 . 이것은 훌륭하지만 나에게는 두 가지 단점이 있습니다.

  1. $HOME으로 표시되지 않습니다 ~.
  2. 마지막 디렉토리 이름만 필요하고 가 필요하지 않습니다 /. 예를 들어 또는 /home/ook/thingy/src로만 표시됩니다 .src~/t/src

당신은 가지고 있습니까?멀티플렉서이를 수행하는 명령은 무엇입니까?

함께 사용하면 보너스 포인트전원 케이블게다가.

답변1

나는 당신이 원하는 것과 비슷한 것을 사용하고 있습니다.

setw -g window-status-format "#[underscore]#{?#{==:#{window_panes},1},,+}#[bold]#W#[nobold]:#{=|-24|…;s|$HOME|~|:pane_current_path}"

pane_current_path손상 에 초점을 맞추기 위해 약간 단순화했습니다 .

"#{=|-24|…;s|$HOME|~|:pane_current_path}"

이렇게 하면 홈 디렉터리가 바뀌고 ~가장 오른쪽 24자를 제외한 모든 문자가 제거됩니다. 그러나 이 방법으로 나는 ~긴 경로의 선두가 제거되었음을 알았습니다.

경로 잎에만 해당:

"#{s|$HOME|~|;s|.*/||:pane_current_path}"

그 당시에 는 집에 있을 때 대신 ~표시되도록 교체 항목을 먼저 넣었습니다 .~<username>

따라서 귀하의 예에 더 가까이 다가가려면 다음을 수행하십시오 ~/t/src.

"#{s|$HOME|~|;s|/.*/|/…/|:pane_current_path}"

로 렌더링됩니다 ~/…/src. 수정된 패턴과 aa 역참조를 사용하여 #{=더 가까워질 수 있지만 모든 것이 올바른지 확실하지 않습니다.

답변2

나는 최근에 유사한 것을 찾으려고 노력했는데, 내 경우에는 창 정보(Tmux 명령에 대한 choose-window)를 기본값보다 더 풍부하게 설정했습니다.

매뉴얼 페이지에서 관련 정보는 다음 위치에 있는 것으로 보입니다.체재섹션은 다음 명령에서도 사용됩니다 status-{left,right}.

체재

일부 명령은 형식 매개변수와 함께 -F 플래그를 허용합니다. 이는 명령 출력의 형식을 제어하는 ​​문자열입니다. 대체 변수는 "#{session_name}"과 같이 "#{" 및 "}"로 묶입니다. 다음 표에는 옵션 값으로 사용할 수 있는 tmux 옵션의 가능한 변수 또는 이름이 나열되어 있습니다. 일부 변수에는 "#S"와 같이 더 짧은 별칭이 있으며 "##"은 단일 "#"으로 대체됩니다.

조건문은 앞에 "?"를 붙이고 두 옵션을 쉼표로 구분하여 사용할 수 있습니다. 지정된 변수가 존재하고 0이 아닌 경우 첫 번째 대안이 선택되고, 그렇지 않으면 두 번째 대안이 사용됩니다. 예를 들어 "#{?session_attached,attached,not Attached}"에는 세션이 연결된 경우 "attached" 문자열이 포함되고, 세션이 연결되지 않은 경우 "not Attached" 또는 "#{?automatic-rename ,yes, no" 'yes'에는 자동 이름 바꾸기가 활성화된 경우 "yes"가 포함되고 그렇지 않으면 "no"가 포함됩니다.

결과 문자열 앞에 "=", 숫자 및 콜론을 추가하여 결과 문자열의 길이를 제한할 수 있습니다. 양수는 문자열의 시작 부분부터 계산되고, 음수는 끝부터 계산됩니다. 따라서 "#{=5:pane_title}"에는 창 제목의 처음 5자 이하 또는 "#{=-5:"가 포함됩니다. Pane_title}"에는 창 제목의 처음 5자가 포함됩니다. 마지막 5자. 시간 변수 앞에 "t:"를 붙이면 문자열로 변환됩니다. 따라서 "#{window_activity}"는 "1445765102"를 제공하고 "#{t:window_activity}"는 "Sun Oct 25 09:25 :02 2015"를 제공합니다. 'b:' 및 'd:' 접두사는 각각 변수의 basename(3) 및 dirname(3)입니다. 's/foo/bar/:' 형식의 접두사는 항상 'foo'를 'bar'로 대체합니다.

또한 "#()"을 사용하여 셸 명령 출력의 첫 번째 줄을 삽입할 수 있습니다. 예를 들어 "#(uptime)"은 시스템의 가동 시간을 삽입합니다. 형식을 구성할 때 tmux는 "#()" 명령이 완료될 때까지 기다리지 않고 대신 동일한 명령을 실행한 이전 결과를 사용하거나 명령이 이전에 실행되지 않은 경우 자리 표시자를 사용합니다. 명령은 tmux 전역 환경 세트를 사용하여 실행됩니다(환경 섹션 참조).

sed몇 번 시도한 후에도 디렉토리 이름 작업에 내장된 유사한 방법을 얻을 수 없는 것 같습니다 #{pane_current_path}. 그러나 어떤 쉘 명령이나 환경 변수도 사용할 수 있으므로 간단히 사용할 수 있습니다.

set status-left "#(basename ${PWD})"

현재 전력선을 사용하고 있지 않기 때문에 전력선 호환성에 대해서는 잘 모르겠습니다.

관련 정보