Lấy lại hành vi dán bản sao cũ trong tmux, bằng chuột


111

Đây là những gì tôi thường làm trong tmux để sao chép-dán (sử dụng chuột, bàn phím hoạt động khác và đó không phải là điều tôi quan tâm):

  1. Chọn văn bản bằng chuột, nhấn nút trái
  2. Dán văn bản bằng nút giữa

Tôi đã nâng cấp hệ điều hành của mình và điều này đã nhận được một phiên bản tmux mới. Tôi đã không thay đổi .tmux.conftệp cấu hình của mình .

Đây là những gì tôi phải làm với phiên bản hiện tại của tmux, 1.6(được đóng gói sẵn trong linux crunchbang mới nhất):

  1. Chọn văn bản bằng chuột, nhấn nút trái shift phím
  2. Dán văn bản bằng nút giữa
  3. Thiết bị đầu cuối bị chặn, một vùng thông tin nhỏ hiển thị một số con số ở trên cùng bên phải của ngăn hiện tại (tức là [0/24], có thể là một cái gì đó liên quan đến số lượng ký tự đã được dán), điều này có ý nghĩa nhỏ đối với tôi và tôi không cần / muốn (sửa: nó dường như copy-modeđược nhập tự động ở đây)
  4. Tôi phải nhấn qphím để nhận lại thiết bị đầu cuối chức năng.

Điều này là quá phức tạp cho một cái gì đó tôi làm hàng chục lần một ngày. Làm sao để cơ chế cũ hoạt động trở lại?


2
trong thiết bị đầu cuối của tôi st, Shift+ MouseMiddledán Xselection như hành vi truyền thống. FWIW, MouseMiddlekhông có công cụ sửa đổi không làm gì cả.
nabin-info 24/02/17

Câu trả lời:


84

Để khôi phục cấu hình sao chép / dán mặc định, bạn cần (ít nhất là tạm thời) tắt hỗ trợ chuột trong tmux:

prefix : set -g mouse off

Trong trường hợp prefixlà chìa khóa truy cập tmux ( Ctrl+ Btheo mặc định trừ khi bạn tái bản đồ nó). :bắt đầu chế độ lệnh và set -gđặt tham số trên toàn cục.

Khi tắt chế độ chuột, các chức năng sao chép / dán tiêu chuẩn do hệ điều hành của bạn cung cấp sẽ hoạt động như mong đợi.

Một việc khác mà bạn có thể muốn làm là 'tối đa hóa' ngăn hiện tại, để bạn có thể sao chép nhiều dòng một cách dễ dàng.


Nếu bạn đang làm việc với phiên bản tmux cũ (trước 2.1), thay vào đó bạn cần sử dụng những điều sau:

prefix : set -g mode-mouse off

Có thêm chi tiết và một số ràng buộc chính tiện dụng để tự động hóa tất cả những điều này ở đây:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Lực đẩy chính của bài viết được liên kết ở trên là đoạn trích này từ .tmux.conf:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
Nếu bạn có tmux 1.8 hoặc mới hơn, có một lệnh tích hợp, Control-B z sẽ chuyển đổi trạng thái thu phóng của ngăn hiện tại. Vì vậy CB z để zoom khung này ra toàn màn hình, cùng một lệnh để khôi phục lại. Điều này loại bỏ sự cần thiết phải xác định CB + và CB - chuỗi khóa ở cuối cấu hình ở trên.
dr-jan

9
Nếu bạn có tmux 2.1 hoặc mới hơn, tất cả các lệnh liên quan đến chuột đã trở nên lỗi thời, được thay thế bằng 'chuột' để thiết lập mọi thứ. Vì vậy, để tắt chế độ chuột theo mặc định, hãy sử dụng 'setw -g mouse off'. Xóa mọi tham chiếu đến 'mode-mouse', 'mouse-resize-panel', 'mouse-select-pane' hoặc 'mouse-select-window'.
dr-jan

50
Tuy nhiên, bật chế độ chuột có lợi ích của nó: nó cho phép tôi cuộn. Có sự kết hợp của các cài đặt cho phép tôi sử dụng thiết bị đầu cuối của mình như một thiết bị đầu cuối bình thường không? Sao chép / dán và cuộn bao gồm?
Mihai Danila

1
Có một số cài đặt khác mà tôi có thể đã nhầm lẫn, bởi vì trên OSx (Sierra), optionkhông giúp được gì. Biến mode-mouse offcho phép tôi để chọn như bình thường, nhưng sau đó tôi không thể sao chép vào clipboard ( cmd+Choặc cmd+shift+Ckhông làm gì cả, hoặc rung một hồi chuông báo lỗi, hoặc đưa lên màu selector)
dwanderson

3
Đã thử nghiệm với tmux v3, một ràng buộc để bật và tắt nó:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. Sao chép văn bản: chọn văn bản và nhấn chuột left-buttonbằng shiftphím nhấn.
  2. Dán văn bản bằng shiftphím +middle-button

30
Đối với người dùng OSX, đó là khóa tùy chọn, như được mô tả trong bài đăng trên blog này: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
Trên thực tế, sau khi chọn văn bản bằng Shift + LMB, bạn có thể sử dụng chức năng hệ điều hành (Ctrl-Shift-C trong trường hợp của tôi) để sao chép vào khay nhớ tạm không phải X11.
Eugene Pankov

8
OP tuyên bố rõ ràng rằng họ muốn có thể sao chép và dán bằng chuột mà không cần sử dụng bàn phím. Nhấn Shift(hoặc phím tùy chọn trên OSX) là thủ thuật lâu đời nhất trong cuốn sách và hoạt động trên hầu hết các trình giả lập, nhưng không trả lời câu hỏi ban đầu.
Lqueryvg

1
@pangratz Sử dụng phím tùy chọn có thể phù hợp với người dùng iTerm, nhưng không phù hợp với người dùng Terminal gốc.
anishpatel

Cảm ơn bạn về cách giải quyết này! Mặc dù vậy, nó vẫn chưa tối ưu - con lăn chuột = cuộn lịch sử và tất cả các chức năng khác của chuột = bình thường sẽ tốt hơn nhiều.
Torsten Bronger

36

Nếu "set -g mode-mouse on", bạn có thể thực hiện thủ thuật này:

Trên máy Mac, nhấn nút "fn", sau đó chọn văn bản và sao chép bằng nhấp chuột phải hoặc bàn phím cmd + c.


4
đối với tôi, điều này dường như chỉ hoạt động nếu tôi không cuộn bằng chuột. khi tôi cuộn bằng chuột, điều này không còn hoạt động nữa
Paul

Ngoài ra bạn có thể dán với fn+Middle-Click
spinup

10

Được sửa đổi từ đây - tôi sử dụng xclipthay vì xseltrong bản gốc:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

Điều này đang làm việc vui vẻ cho tôi trong tmux 2.5-rc2


điều này hoạt động tốt trong thiết bị đầu cuối, nhưng nó hoạt động kỳ lạ khi tôi cố gắng dán vào vim
Tropilio

9

Sử dụng <prefix>+mbật hoặc tắt chế độ chuột

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

Điều này làm việc hoàn hảo cho tôi. Cám ơn rất nhiều. Tôi muốn có thể cuộn ở chế độ chuột, nhưng điều đó đã phá vỡ khả năng sao chép văn bản của tôi. Điều này cho phép chuyển đổi nhanh chóng nếu bạn muốn tắt chế độ chuột.
Bijan

6
Tôi sử dụngbind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov

người dùng muốn có thể sao chép và dán, chưa có nhiều tùy chỉnh .tmux.conf!
Jack Wasey

6

Tôi đã gặp vấn đề khi lấy ví dụ của Christian làm việc cho Tmux 2, tôi nghĩ là có một số lỗi chính tả. Tôi có những thứ bên dưới để làm việc và dễ đọc hơn một chút và đặt cả chế độ toàn cầu và chế độ cửa sổ. hth ai đó. người dùng mới và tmux là tuyệt vời!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
Làm việc cho tôi. Đã thử nghiệm với Tmux HEAD từ github (tính đến ngày hôm qua).
Lqueryvg

2
Để thực hiện công việc này, tôi đã phải thay đổi show-optionsdòng thành tmux show-options -g | grep -q "mouse\\s*on"; \ . Điều này là do các regex mouse.*ontrận đấu @scroll-in-moused-over-pane "on"mà là một phần của các plugin nhdaly / tmux-tốt-chuột-mode
Mandy Schoep

1
Ràng buộc đơn giản hơn về cơ bản thực hiện điều tương tự -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Đối với người dùng Mac + iTerm2 + tmux (phiên bản> 2.1) :

Đảm bảo chế độ chuột được đặt trong cấu hình tmux (Chỉ cần thêm set -g mode-mouse onvào ~ / .tmux.conf). Bây giờ, để sao chép văn bản bên trong một ngăn:

  1. Nhấn option + commandvà chọn văn bản bạn muốn sao chép bằng con trỏ chuột. Nó giống như cắt một bức ảnh.
  2. Văn bản đã chọn sẽ được sao chép tự động (không cần command + c). Chỉ cần dán nó bằng cách thông thường.

5

Yves Blusseau đã giúp tôi tìm ra cách nó hoạt động nhưng trên máy tính của tôi (chạy Windows 10 ) thì hành vi hơi khác một chút.

tmux 2.6

Với chuột được kích hoạt ( :set -g mouse on)

Sao chép

  1. Nhấn giữ Shiftvà chọn văn bản bạn muốn sao chép bằng chuột
  2. Bây giờ nhấp chuột phải để sao chép văn bản đã chọn (mà không cần giữ Shift)

Dán

  1. Nhấn giữ Shiftvà nhấp chuột phải để chèn văn bản đã sao chép

Đơn giản như vậy. Thưởng thức!


Tốt nhất. Đơn giản và thanh lịch.
yếu ớt

3

Đây là phiên bản sửa đổi của câu trả lời của Kaixuan tương thích với Tmux 2.1.

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

Tất cả các mode-mousetùy chọn đã được kết hợp thành một mousetùy chọn và show-optionphải được thay thế bằngshow-options


1
điều này được cho là trên tmux.conf? ??
Arnold Roa

1
cái này sẽ đi đâu
statquant

@ArnoldRoa @statquant: Có, điều này được đưa vào ~/.tmux.confhồ sơ. Nó đang ràng buộc <prefix>+mkhóa để chạy tập lệnh nội tuyến đó.
inblueswithu

0

trong ~/.tmux.conf:

set -g mouse off

Việc có bind r source-file ~/.tmux.confcũng có thể hữu ích vì vậy bạn có thể ctrl-d rtải lại cấu hình chẳng hạn.


0

Dựa trên các câu trả lời khác được đăng ở đây, tôi đã tạo ra một giải pháp ngắn gọn hoạt động với (ít nhất) tmux 2.8tmux 3.1 .

Bạn có thể bật tmux mouse supportvà tắt bằng cách nhấn prefix- M. Trong .tmux.conftệp, bao gồm dòng này:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

Điều này sẽ hiển thị mouse: 1khi được bật và mouse: 0khi bị tắt. Nhấn liên tục prefix- Msẽ chuyển đổi giữa bậttắt chế độ chuột .

Xem thêm: hỗ trợ chuột tmux

CHỈNH SỬA: Nếu bạn thấy returned 1thông báo lỗi lệnh thì bạn sẽ cần sử dụng phần sau để thay thế cho tmux 3.1 hoặc tmux 3.2 :

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(giải pháp này đã được đề cập trước đây)


-1

Tôi sử dụng liên kết sau để chọn văn bản bằng cách nhấn nút trái chuột -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.