it-swarm-vi.com

Di chuyển khung tmux sang cửa sổ

Làm cách nào để di chuyển một khung hiện có vào một cửa sổ khác trong tmux khi tôi có nhiều cửa sổ và ngược lại?

Tôi đến từ màn hình, nơi tôi có thể chuyển sang khung và sau đó chuyển cửa sổ cho đến khi tôi đến cái tôi muốn; tmux dường như không cho phép điều này.

241
mrlanrat

Lệnh để thực hiện việc này là join-pane trong tmux 1.4.

join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]  
    (alias: joinp)
    Like split-window, but instead of splitting dst-pane and creating
    a new pane, split it and move src-pane into the space.  This can
    be used to reverse break-pane.

Để đơn giản hóa điều này, tôi có các liên kết này trong .tmux.conf Cho rằng:

# pane movement
bind-key j command-Prompt -p "join pane from:"  "join-pane -s '%%'"
bind-key s command-Prompt -p "send pane to:"  "join-pane -t '%%'"

Cái đầu tiên lấy khung từ cửa sổ đích và nối nó với dòng điện, cái thứ hai làm ngược lại.

Sau đó, bạn có thể tải lại phiên tmux của mình bằng cách chạy phần sau từ trong phiên:

$ tmux source-file ~/.tmux.conf
221
jasonwryan

tham gia khung là câu trả lời. Tôi cũng gặp vấn đề với những nỗ lực sử dụng nó dựa trên tài liệu tmux. Tôi phát hiện ra rằng -t-s công tắc dường như chấp nhận [session]:window và không [session:]window. Điều đó có nghĩa là việc chỉ định phiên là tùy chọn, nhưng bao gồm : là bắt buộc. (Tôi đang sử dụng tmux 1.5)

Do đó, để thêm một khung vào cửa sổ hiện tại và đặt cửa sổ 1 vào khung, lệnh sẽ là (Ctrl+B hoặc bất cứ khóa liên kết nào của bạn là, theo sau) ...

:join-pane -s :1

Sau đó, bạn có thể tách chúng ra bằng break-pane mà theo mặc định là: Ctrl+B! Nếu bạn muốn liên kết nó với một phím tắt, tôi khuyên bạn KHÔNG nên ghi đè một ràng buộc mặc định như s, bởi vì trên đường bạn sẽ tìm trên internet để tìm câu trả lời liên quan đến phiên chọn và nó sẽ không hoạt động trên hệ thống của bạn. Lưu ý rằng break-pane bị ràng buộc với ! và @ là ngay bên cạnh nó và không bị ràng buộc với bất cứ điều gì theo mặc định. Vì lý do đó, tôi đề nghị ràng buộc này ...

bind-key @ command-Prompt -p "create pane from:"  "join-pane -s ':%%'"

Thay phiên, để có một trình chọn tương tác ...

bind-key   @ choose-window 'join-pane -h -s "%%"'
bind-key [email protected] choose-window 'join-pane    -s "%%"'

Thay phiên, để luôn tham gia cửa sổ được truy cập gần đây nhất ...

bind-key @ join-pane -h -s !

LƯU Ý: -h làm cho nó xếp chồng các tấm theo chiều ngang (với sự phân chia theo chiều dọc) trái ngược với hành vi mặc định là ngược lại.

Điều quan trọng nhất là TÌM HIỂU bất cứ điều gì bạn chọn để tắt. Bởi vì nếu bạn chỉ đặt nó và quên nó, bạn sẽ bị gim khi bạn thấy mình trên một máy chủ nước ngoài. Và hãy đối mặt với nó, điều quan trọng nhất mà bộ ghép kênh đầu cuối mang lại cho bạn là các phiên đáng tin cậy trên các máy chủ từ xa.

Việc này hoàn thành chuyển đổi của tôi từ GNU Màn hình sang Tmux. Tôi sẽ không bao giờ nhìn lại.

Thưởng thức!

167
Bruno Bronosky

Tôi nghĩ rằng tôi thích những gì tôi đã sử dụng để di chuyển panes đến cửa sổ riêng của họ tốt hơn. tôi sử dụng

break-pane -t :

Tôi đã tìm ra nó thông qua thử nghiệm, nhưng nó dường như hoạt động rất tốt. Bạn có thể gõ phím hoặc bí danh một cách dễ dàng, không cần kịch bản.

45
Joshua K

Ràng buộc chính

Theo mặc định, Ctrl+b! would break khung hoạt động vào một cửa sổ mới chuyển sang nó.

Ở đâu Ctrl + b là mặc định tiền tố cho tmux .

Chi tiết

Lệnh tmux mà khóa này thực thi là break-pane (bí danh: breakp) như được triển khai trong cmd-break-pane.c và bị ràng buộc như mặc định trong key-bindings.c như đã thấy trong list-keys (bí danh: lsk) đầu ra lệnh:

bind-key    -T prefix       !                 break-pane
15
user86041

Nếu bạn không muốn nhập định danh khung vào Dấu nhắc, bạn cũng có thể sử dụng

bind-key j "join-pane -s !"

sẽ tham gia khung/cửa sổ hoạt động cuối cùng vào cửa sổ hiện tại.

14
Bernhard T

Sau khi xem qua các câu trả lời khác và lướt qua trang man tmux, tôi đã giải quyết các ràng buộc sau đây:

bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'

Điều này sẽ cho phép bạn tương tác chọn cửa sổ để tham gia và phản chiếu các chữ thường s/v để tạo các phân chia dọc/ngang mới. Nếu ai biết cách chọn từng tấm thay vì cửa sổ hãy cho tôi biết.

14
toupeira

Bạn không phải thay đổi các ràng buộc quan trọng của bạn.

Trong khi ngăn bạn muốn di chuyển có tiêu điểm, hãy nhập Tiền tố sau đó :join-pane -t :1 Trong đó 1 Là bất cứ số nào của cửa sổ đích trong cùng một phiên. Bạn có thể chuyển nó sang phiên khác bằng cách thêm tên của nó như project:3. Đối với tôi join-pane Tab-autocompletes từ j.

Thêm một công tắc -h Hoặc -v Vào lệnh để đặt hướng của phần tách mới được tạo ở đích hoặc chỉ cần đi tới nó và Tiền tốspace sắp xếp lại.

4
Walf