2013-06-02 2 views
7

특정 창에 보조 크기 매개 변수를 지정하여 창의 크기를 조정할 때 새 크기를 할당하고 종료시이를 반환 할 수 있기를 바랍니다. 그래서 예.tmux 포커스가있는 크기 조정

([]이 집중 터미널 커서를 나타냅니다)

________________ 
|$ ls |  | 
|a's |  | 
|dir |  | 
|$  |$ [] | 
|______|_______| 

스왑 창 초점

_______________ 
|  | | 
|$ ls | | 
|a's dir | | 
|$ [] |$ | 
|________|____| 

등등. 최근 tmux 버전의 창 크기를 조정 한 이후로는 특히 멋지게 될 것입니다. 콘텐츠를 잘라내 기보다는 콘텐츠를 다시 흘려 보내는 것이 좋습니다.

예에서 왼쪽 창은 포커스가있을 때 자동으로 8 열로 전환되도록 설정된 너비를 가지며 포커스를 잃었을 때 더 얇아졌습니다. 내용이 어떻게 표시되는지 주목하십시오 (이것은 왜 우리가 tmux를 좋아하는지 이유를 설명합니다). 그러나 우리는 여전히 현재 포커스가있는 부분을 자동으로 확장 시켜서 케이크를 먹을 수 있습니다.

resize-pane 명령의 응용 프로그램을 자동화하기 위해 정교한 바인딩을 생각해 내서 원하는대로 정교하게 만들 수 있습니다. 하지만이 기능을 내장하고 싶었습니다.

각 창에 대한 보조 4- 튜플의 수정을 추적하고 허용하는 것이 현실적입니다. 이것들은 해당 창에 집중할 때 수행 할 작업량을 resize-pane -L/D/U/R으로 지정하고 해당 창에 초점이 맞지 않을 때 반대 방향을 지정합니다.

이보다 더 합리적인 공식이있을 수 있습니다.

+0

아직 어떤 방법을 찾았습니까? – golfadas

+0

슬프게도, 아쉽게도 더 빠르게 바인드 할 수 있도록 바인드를 더 많이 만들었지 만 이제는 8 개의 바인드를 사용하여 창 크기를 조정하고 "돌아 오는"동작이 없으므로 많은 수동 작업이 필요합니다. 그리고 저는 아직 새로운 바인딩을 사용하는 습관을 짓지 않았습니다. 그래서 아니야. –

답변

1

부분 솔루션을 찾았습니다 ... Ive는 vim으로 동기화 된 내 창 전환을 얻었으므로 전환 창을 전환 할 때마다 tmux의 크기도 조정합니다.

tmux가 현재 창 크기를 확인하고 그에 따라 크기를 조정하지 않기 때문에 최적이 아닙니다. 어쨌든 ctr-h 또는 Ctrl-k를 두 번 눌러 창 크기의 크기를 조정할 수 있기 때문에 꽤 잘 작동합니다.

관련 설정은 다음과 같다 :

# Sync panes with vi 
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-h) || tmux select-pane -L && tmux resize-pane -R 30" 
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-l) || tmux select-pane -R && tmux resize-pane -L 30" 
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-j) || tmux select-pane -D" 
# Move panes up and down, wont resize 
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim(diff)?$' && tmux send-keys C-k) || tmux select-pane -U" 
1

죄송합니다, 추측이 단지 양 지금까지,하지만 난 그것을 몇 가지에 대해 생각하고, 그 지원할 수 TMUX에 내장되어 기능이 있다고 생각 이 스크립트는 많은 스크립팅을 필요로합니다.

이 질문을 게시했습니다.

http://sourceforge.net/p/tmux/mailman/message/31221459/

는 본질적으로는 같은 select-layout 명령어 (아마도!?!) 배치에 임의의 돌연변이를 적용하는 데 사용될 수 보인다. 그래도 작동하는지 테스트하지 않았습니다.

토마스 아담 (Thomas Adam)은 layout-custom.c 소스를보고 어떻게되는지 자세히 알아 보도록 제안했습니다. 그게 내가 가진 한도 내다. 그러나 프로그래밍 방식으로 레이아웃을 변경하고 select-layout으로 전달할 작업 문자열을 생성 할 수 있다면 매우 좋은 방법이 될 것입니다.

업데이트 : 지금은이 질문 한 직접 (단지 적절한 문자열을 생성하는 참으로 임의의 레이아웃에 크기 조정 달성 할 수 있는지 여부), 그러나 아직 씨 아담 자신에서, 응답을 받았지만, 그 이유는 왜 의심 체크섬을 전달하는 문자열을 생성 할 수 있다면이 방법을 사용할 수 있습니다. 어떤 방식 으로든 창 크기를 조정할 수 있고 문자열을 기록하면 (list-windows 명령에 의해 생성 됨) 나중에 기록 된 값으로 복원 할 수 있습니다 문자열을 사용한 레이아웃. 이것은 레이아웃이나 다른 것을 "저장"하기 위해 취해야하는 일종의 명시 적 조치가 아니라는 것을 의미합니다. 체크섬은 쓰레기/병리학 적 문자열이 문자열을 혼란에 빠뜨리는 것을 방지하는 영리한 방법 일 것 같습니다 pane 레이아웃 재배치를 수행하는 인터프리터.

제대로 작동하려면 구성하기가 쉽지 않은 문자열을 확실히 전달해야합니다. 그러나 체크섬 계산을위한 코드와 나머지는 layout-custom.c에서 볼 수 있습니다. 어느 날 적절한 변환을 구현하는 셸 스크립트 (또는 코드를들 수 있다면 C 프로그램)로 돌아갈 것입니다. 재미 있어야합니다.

그래, 이걸 밖으로 크랭크하고 그 좋은 작은 현상금을 데리러 나를 위해 최고 일 것입니다,하지만 난 진짜 일을 가지고 TM 오늘 밤 불행히도 기다리고 있습니다.

+0

그것은 여전히 ​​대단한 대답이었습니다. 현상금은 당신 것이고 정보를 가져 주셔서 감사합니다! – golfadas

관련 문제