Câu hỏi Di chuyển đầu ra shell bằng chuột trong tmux


Di chuyển chuột không hoạt động tmux cách nó hoạt động khi tôi chạy shell không có tmux (trong Gnome Terminal). Có vẻ như tmux gửi các sự kiện cuộn chuột như thể tôi đã nhấn phím Lên / Xuống. Nhưng tôi muốn nó cuộn qua vỏ đầu ra lịch sử. Có cách nào để làm cho tmux làm việc như thế này?

Chú thích: Tôi biết cách cuộn bằng bàn phím (nhờ câu hỏi khác đây).

Tôi đã thử di chuyển chuột trong hai phiên bản của tmux:


222
2017-11-12 14:02


gốc


Tôi nghĩ rằng câu trả lời của bukzor giải quyết vấn đề của bạn cho tmux 1.5 và mới hơn. - kynan


Các câu trả lời:


Để cuộn trong lịch sử của đầu ra Bạn sẽ sử dụng ^b + [  Sau đó, bạn có thể sử dụng M + V để lật trang và ^ V thành trang. Tôi không biết nếu bạn có thể sử dụng PgUp và PgDown Tuy nhiên. Thiết bị đầu cuối của tôi không gửi các khóa này đến tmux. Thay vào đó nó cuộn chính nó và không phải là lịch sử tmux.

Để thoát chế độ sao chép, nhấn ESC

Để sử dụng chuột của bạn ở chế độ này (gọi là chế độ sao chép) ^b + : và nhập như sau:

setw -g mouse on

Lưu ý: Trong tmux <2.1, tùy chọn được đặt tên mode-mouse, và không mouse

Bây giờ khi bạn chuyển sang chế độ sao chép, bạn có thể sử dụng chuột để cuộn qua nó. Bạn có thể đặt lệnh này trong ~ / .tmux.conf nếu bạn muốn nó tải mỗi khi bạn chạy tmux.

Cập nhật: Tính năng tmux 1.5 tùy chọn này làm cho việc sử dụng bánh xe cuộn tự động chuyển sang chế độ sao chép và cuộn lại bộ đệm cuộn ngược tmux. Nó không phải là cần thiết để đánh đầu tiên Ctrl-B + [ nữa không. Cuộn lùi xuống lời nhắc cũng tự động kết thúc chế độ sao chép.


207
2017-12-01 18:48



Lưu ý rằng bạn có thể phải tải lại tệp cấu hình nếu bạn đã có máy chủ tmux đang chạy. blog.sanctum.geek.nz/reloading-tmux-config  tập tin nguồn tmux ~ / .tmux.conf - Allan Nienhuis
Không làm việc cho tôi trên OS X. - Ain
@Ain - Hiện tại có 11 phiên bản chính của OS X. Phiên bản nào chúng ta đang nói chính xác? - Ramhound
Đối với tmux> = 2.1, hãy xem câu trả lời của @ DannyRe (hiện tại khá xa). - Joel Ostblom
set -g mouse on làm việc cho tôi trên macOS tmux 2.1 - Miguel Mota


Có một số thay đổi đối với Tmux 2.1

  • Chế độ chuột đã được viết lại. Hiện không còn tùy chọn cho:

    • cửa sổ thay đổi kích thước chuột
    • -bảng chọn chuột
    • chuột chọn cửa sổ
    • chế độ chuột

    Thay vào đó chỉ có một tùy chọn: 'chuột' để bật hỗ trợ chuột hoàn toàn.

Đó sẽ là

set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

111
2017-10-19 11:02



Cảm ơn, bây giờ chọn panes, vv làm việc, nhưng di chuyển không. Để làm lại thao tác cuộn, hãy sử dụng công cụ này: github.com/NHDaly/tmux-scroll-copy-mode - Mahdi
tuyệt vời - điều này thậm chí hoạt động trên cygwin - tmux trên WINDOWS 7 - WD11
@ Mahdi Điều này dường như không hoạt động trên osx. Bất kỳ gợi ý nào? - SolidSnake
@SolidSnake: Tôi không nhớ phải đối mặt với bất kỳ vấn đề nào bằng cách sử dụng plugin đó. Nó hoạt động trơn tru, tôi đã kích hoạt chế độ chuột và sau đó cài đặt nó. Bạn nên tải lại cấu hình tmux của mình bằng tmux source-file ~/.tmux.conf - Mahdi
bind dường như không cần thiết nữa trên tmux 2.3 - Theron Luhn


Phiên bản hiện tại của tmux (1.5) cho phép bạn chỉ cần bật tùy chọn chế độ chuột và cho phép bạn cuộn bằng bánh xe chuột.

         mode-mouse [on | off]
                 Mouse state in modes.  If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

Trong tệp .tmux.conf của tôi:

set-window-option -g mode-mouse on

61
2017-11-15 20:05



Đó là hành vi bạn thực sự muốn! Di chuyển chuột cho phép chế độ sao chép, không chỉ cuộn bộ đệm thay thế vỏ. Đó cũng là động lực để chuyển từ màn đến tmux cho tôi. Có một tùy chọn để có được cùng một hành vi với Shift + PgUp không? - kynan
@kynan: Cá nhân tôi chỉ cần nhấn C-A PgUp Để làm việc đó. Bạn có thể liên kết trực tiếp khóa trang với tmux bind-key -n PPage copy-mode -u. Các thign tương tự nên làm việc cho shift + pageup nếu bạn un-ràng buộc nó từ thiết bị đầu cuối địa phương của bạn. - bukzor
Điều này dẫn đến một hành vi kỳ lạ, khi tôi di chuyển trở lại dòng lệnh, tôi nhận được một ký tự phụ được chèn vào CLI, điều này thường dẫn đến lệnh đầu tiên của tôi không đúng định dạng. Nó khá là khó chịu. - Chris R
Lưu ý rằng, tuy nhiên điều này làm việc tốt cho kích hoạt di chuyển với con chuột, nó gây ra hành vi kỳ lạ khi lựa chọn văn bản được dán với nhấp chuột giữa. Tôi đã kết thúc preffering C-b pg-up / down (mặc định) kể từ khi tradeoff là không thể chấp nhận được. - h7r
@ ChrisR Tôi nhận được điều này khá một chút quá và nó không phải là khá phù hợp. Có phải là [M [M # [M [M # [M [M # [M [M # [M loại chuỗi? - Elijah Lynn


Hãy thử điều này trong tệp .tmux.conf của bạn

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Được lấy từ http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY


51
2017-10-24 16:55



+1 cho escape-time cài đặt - Dakusan


Ai đó (từ một nguồn tôi bị mất) đề nghị thêm những điều sau đây vào ~.tmux.conf:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Tôi không biết nó hoạt động như thế nào hoặc nó làm gì, nhưng bây giờ điều này cho phép tôi cuộn với bánh xe chuột bên trong một phiên tmux mà không cần phải nhập vào chế độ sao chép của tmux; Tôi chỉ cần cuộn bánh xe và BAM! nó hoạt động. Lưu ý rằng tôi đang sử dụng terminal.app, nhưng tôi nhớ OP đã trả lời cụ thể để sử dụng với gnome-terminal.


14
2018-06-22 17:10



Jed, cảm ơn bạn! Lời khuyên của bạn cũng hoạt động trong gnome-terminal. Tôi sẽ cố gắng sử dụng thiết lập này một thời gian. Nhưng nó có một bất lợi: di chuyển chuột bây giờ không hoạt động như mong đợi trong less. Nếu tôi tải less phía trong tmux, di chuyển chuột không cuộn tệp được mở trong less. Nó cuộn toàn bộ thiết bị đầu cuối. Kỳ lạ thay, vim cư xử như mong đợi bên trong tmux với thiết lập của bạn. - user31494
Lưu ý rằng tmux 1.5 này được thay thế bởi setw -g mode-mouse on tùy chọn, cuộn lùi chế độ sao chép bằng cách sử dụng bánh xe chuột. - kynan
Giải thích là tùy chọn này vô hiệu hóa khóa cuộn trên màn hình thay thế của thiết bị đầu cuối, điều này là mong muốn trong hầu hết các trường hợp vì các ứng dụng yêu cầu bộ đệm màn hình thay thế (vi, ít, tmux, v.v.) cung cấp khả năng cuộn của riêng chúng. Ghi đè khóa này trong tmux cho phép cuộn bộ đệm màn hình thay thế của thiết bị đầu cuối mà không đưa ra kết quả mong muốn trong tất cả trừ một vài trường hợp. Xem câu trả lời này để trích dẫn từ man xterm giải thích màn hình thay thế. - kynan
Than ôi, điều này không hoạt động trong iTerm - Suan
Tôi đã có kết quả tích cực với điều này trong iTerm 2 - Keith Smiley


tmux 2.1 giới thiệu các liên kết chuột mới.

Tôi đã viết những liên kết này ngay hôm nay. Nó liên tục liên kết bánh xe chuột với các mũi tên khi không có trong Vim, bởi vì Vim có khả năng giải thích các mã bánh xe chuột nguyên (cho các mục đích như chọn cửa sổ Vim để cuộn cho bạn tùy thuộc vào một con chuột nào của bạn).

Điều này có nghĩa là cuối cùng chúng ta chỉ có thể sử dụng chuột để xem nhiều trang người đàn ông và bất cứ điều gì khác chấp nhận các phím mũi tên. Bạn có thể mở rộng và chuỗi if logic khi cần thiết để thực hiện nhiều logic hơn cho các ứng dụng của bạn.

bind -n WheelUpPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[ #{pane_current_command} =~ vim ]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

Với khả năng ràng buộc bánh xe mới này, bạn có thể viết mã bánh xe chuột để thực hiện bất kỳ hành vi nhạy cảm ngữ cảnh nào mà bạn thích.


5
2017-12-15 23:44



Tôi bây giờ chỉ là loại đồ chơi với ý tưởng làm cho mousewheel trên biên giới cửa sổ làm một cái gì đó thú vị. Có lẽ những gì tôi sẽ làm không phải là bản đồ bánh xe trên biên giới nhưng bản đồ nó để chu kỳ các cửa sổ tmux khi thực hiện trên các trạng thái. - Steven Lu
Liên kết tới Github của bạn là gì? Tôi muốn bám sát những nỗ lực của bạn! Một tính năng khác mà tôi đang tìm kiếm là phải nhấp đúp vào sao chép từ vào khay nhớ tạm X, giống như nó ở bên ngoài của Tmux. - joeytwiddle
@joeytwiddle Tôi khuyên bạn nên github.com/NHDaly/tmux-better-mouse-mode, xem câu trả lời khác của tôi - Steven Lu


Gnome-terminal thực hiện một số thủ thuật gọn gàng khi dịch các sự kiện di chuyển chuột sang các phím mũi tên Lên và Xuống trong các điều kiện cuộn "thông thường" bị hạn chế. Ví dụ: khi bạn xem một số văn bản sử dụng less (điều này xảy ra đặc biệt khi bạn đang đọc một người đàn ông), bạn có thể cuộn nội dung bằng cách sử dụng j, kvà các phím mũi tên. Nhưng cũng thế, với gnome-terminal, bạn có thể làm điều đó bằng cách cuộn chuột, nhờ vào mẹo được đề cập.

Vì vậy, tôi đoán tmux hiện một số "chụp" của thiết bị đầu cuối giống như less - và cơ chế tương tự trong gnome-terminal kicks in: di chuyển chuột dịch sang phím mũi tên lên / xuống.

Bạn có thể tắt tính năng này trong cài đặt tiểu sử và nhận cuộn thông thường trong mọi trường hợp. Chỉ cần bỏ chọn hộp kiểm cuối cùng trong tab "cuộn": the checkbox.


3
2017-12-07 07:03



Cảm ơn bạn đã giải thích, uldtko! Nhưng nó không giúp đỡ với vấn đề di chuyển chuột. Có, với tùy chọn tắt, gnome-terminal dừng gửi ba ^[[A và ^[[B khi di chuột. Nó đẹp hơn tmux (Không xấu ^[[A^[[A^[[A trong một số chương trình, không có cuộn lịch sử lệnh xấu xí), nhưng bây giờ less dừng cuộn khi di chuột. - user31494
Ukranian? (đoán bởi i nhân vật) - dotancohen