Làm cách nào để cuộn trong tmux?


1294

Tôi mới bắt đầu sử dụng tmux và tôi thực sự thích nó, nhưng tôi cần có thể cuộn trong bộ đệm / panes / windows tôi đã mở. Tôi không quan tâm nếu nó hoạt động với chuột hay không. Khi tôi tìm kiếm trang man tmux, tôi chỉ tìm thấy hai trường hợp của từ "cuộn" thậm chí hiển thị và cả hai phải làm với chế độ sao chép. Có cách nào để cuộn mà không cần tất cả chi phí vào chế độ sao chép không?


8
Bạn quan tâm đến vấn đề gì? copy-modelà cách để xem lịch sử (và tùy ý sao chép nội dung ra khỏi nó).
Chris Johnsen

2
đối với tôi, bạn có thể nhấn f7 cho chế độ cuộn và q để thoát
JohnMerlino

7
set -g mode-mouse oncâu trả lời của per @ chaiyachaiya là người chiến thắng cho tôi
Peter Berg

Câu trả lời:


1569

Ctrl- bsau [đó bạn có thể sử dụng các phím điều hướng thông thường để cuộn xung quanh (ví dụ: Up Arrowhoặc PgDn). Nhấn qđể thoát chế độ cuộn.

Ngoài ra, bạn có thể nhấn Ctrl- b PgUpđể chuyển trực tiếp vào chế độ sao chép và cuộn một trang lên (đó là những gì có vẻ như bạn sẽ muốn hầu hết thời gian)

Trong vichế độ (xem bên dưới), bạn cũng có thể cuộn trang lên / xuống theo từng dòng bằng cách sử dụng Shift- kShift- j(nếu bạn đã ở chế độ cuộn). Không di chuyển, con trỏ di chuyển thay vì trang.

Đoạn trích từ trang người đàn ông :

tmux có thể được điều khiển từ máy khách đính kèm bằng cách sử dụng tổ hợp phím của khóa tiền tố, 'C-b' (Ctrl-b) theo mặc định, theo sau là phím lệnh.

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

Cộng thêm một bó nữa. Lưu ý rằng bạn phải nhấn C-bhai lần nếu bạn sử dụng nó cho trang lên vì C-bbị ràng buộc làm phím lệnh. Xem trang hướng dẫn để biết thông tin về việc đặt trước lệnh chế độ sao chép với số lần lặp lại.

Bạn có thể đặt chế độ liên kết chính bằng cách sử dụng Ctrl- b, sau đó

:set-window-option mode-keys emacs

hoặc vi.


14
Tôi nghĩ C-b =choose-buffermặc định. Ý bạn là C-b [( copy-modetheo mặc định)? Ngoài ra, bạn cũng có thể sử dụng C-b PageUpđể bắt đầu chế độ sao chép trực tiếp trên trang trước (rất tiện lợi khi bạn biết những gì bạn muốn xem / sao chép đã cuộn khỏi trang hiện tại).
Chris Johnsen

4
Chính xác, tmux của tôi không có chế độ cuộn. Bạn cần phải C-b [để vào chế độ sao chép và sau đó sử dụng một trong hai emacs hay vi key-bindings để di chuyển xung quanh. Điều này có vẻ như rất nhiều bước chỉ để cuộn, nhưng lợi ích của tmux vẫn vượt xa những phiền toái này. Tôi đang dùng macbook và không có khóa PageUp: - \. (Ngoài ra, làm cách nào để tạo khóa với đánh dấu như bạn đã làm, Dennis?)
chadoh

44
@chadoh: Hãy thử những thứ này trên Macbook của bạn: Trang chủ: fn-LeftArrow; Kết thúc: fn-RightArrow; Trang Up: fn-UpArrow; Trang xuống: fn-DownArrow. Để tạo keycaps:<kbd>Ctrl</kbd>
Dennis Williamson

5
trên macbook, fn + up đi thẳng vào ứng dụng đầu cuối và không bao giờ truy cập vào tmux
Tyler

15
Trên macbook nếu bạn đang ở chế độ cuộn, bạn có thể sử dụng fn + Shift + LeftArrow để cuộn trang.
Nick Hammond

306

Chà, bạn nên xem xét cách thích hợp để thiết lập cuộn: thêm vào tmux.conf

set -g mouse on        #For tmux version 2.1 and up

hoặc là

set -g mode-mouse on   #For tmux versions < 2.1

Nó làm việc cho tôi trong các cửa sổ và panes. Bây giờ tmux là hoàn hảo.

Thực tế tmux có thêm thông tin về các tập tin tmux.conf.


5
Khi tôi thực hiện việc này, nhấp chuột và cuộn chuột sẽ khiến các ký tự vô nghĩa được in ra khu vực nhắc nhở của thiết bị đầu cuối mà tôi đang sử dụng với tmux. Có ý kiến ​​gì không?
ely

22
Người dùng chuột tmux trong tương lai: Để tiết kiệm bạn phải cuộn xuống dưới một lần nữa trước khi gõ, bạn có thể nhấn qđể thoát chế độ cuộn.
Jezen Thomas

15
Cuộn chuột hoạt động tốt với điều này, nhưng tiếc là tôi không thể sử dụng chuột để chọn văn bản nữa. Sử dụng Tilda và tmux.
Friederbluemle 17/03/2015

27
Lưu ý rằng trong tmux 2.1 trở lên, điều này được thay thế bằng set -g mouse onvà cuộn không tự động vào chế độ sao chép như trước đây.
thrnio

25
Lưu ý quan trọng: Cài đặt này ngắt đánh dấu và sao chép văn bản. Sử dụng shift + click để duy trì chức năng này.
Shadoninja

141

Từ .tmux.conf của tôi:

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

Điều này cho phép cuộn xterm bản địa.


28
Bạn có thể giải thích chính xác những gì nó làm?
Ivo

11
Tôi không biết nó làm gì, nhưng đó là thiên tài thuần túy. Cuối cùng, tmux cuộn hoạt động, yay!
bản thân

5
Điều này không phù hợp với tôi trên OS X ...
Nick

17
Giải pháp: gist.github.com/1297707
Nick

6
Hãy xem điều này nếu bạn bối rối về câu trả lời của togdon: superuser.com/questions/310251/ Nhật IMO, nếu bạn chỉ có một khung duy nhất, giải pháp này hoạt động tốt hơn câu trả lời được chấp nhận.
thameera

57

Đối với tmux 2.1 mới nhất, để cuộn bằng chuột một cách an toàn, đây là câu trả lời đúng:

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

Chỉ tải lại .tmux.conf của bạn là không đủ, bạn cần khởi động lại tmux của mình, vd tmux kill-server && tmux

lấy từ https://github.com/tmux/tmux/issues/145


1
Làm thế nào đây không phải là câu trả lời được chấp nhận?
Marcel

2
lưu ý trong câu trả lời này về "không đủ để chỉ tải lại .tmux.conf đã giúp" và thoát tất cả các phiên tmux cho tôi (có thể máy chủ kill sẽ hoạt động)!
Colin D

1
bạn có thể giải thích làm thế nào điều này làm việc?
oligofren

Nó xuất hiện để chuyển tiếp các sự kiện chuột khi chuột được nhấp / cuộn / vv. nếu khung ở trạng thái gián tiếp / đệm (chỉ là chế độ sao chép?) và chuột đang nhấn nút, cuộn, v.v ... Phần cuối cùng bao gồm cuộn ở chế độ trực tiếp bằng cách chuyển sang chế độ gián tiếp trước. Nếu không có các điều khiển đó, thiết bị đầu cuối có thể hiểu các sự kiện là cuộn lịch sử, nếu có. Như đã nói, tôi không biết liệu tôi đã từng có thể khiến máy nhắn tin của mình và Vim cuộn chính xác cùng một lúc chưa, và tôi đã thử một loạt các đoạn trích đi xung quanh.
John P

2
@chefarov - mỗi nhận xét về câu trả lời khác, bạn có thể thực hiện việc này thông qua Shift+clickkhi bạn bật chế độ chuột.
Brendan Moore

14

Trong trường hợp của tôi, chỉ cần opt+ UpArrowopt+ DownArrowtrên OSX.


@ fixer1234 Câu hỏi hoàn toàn không đề cập đến Linux. tmuxcũng có thể được sử dụng trên OS X.
slhck

@slhck: Cảm ơn. Quá mờ mắt; loạn thị bắt đầu. Tôi đã đọc sai thẻ tmux như một thẻ linux.
fixer1234

11

Đây là cách tôi làm cho nó hoạt động, và lý do tại sao tôi nghĩ rằng nó tốt hơn so với cách mặc định.

Để thử nó, đặt tất cả các phần mã vào ~/.tmux.conf.

Bước 1. Thay đổi khóa tiền tố để bạn sẽ không phải đạt tới một bit. 'B' dường như là một phím gần, nhưng nó nằm ở giữa hai ngón trỏ (lần lượt là 'F' và 'J'). Bởi vì phím tắt đó rất cần thiết trong tmux, Cj tốt hơn nhiều vì nó liên quan đến chuyển động tay không (ngoài việc nhấn phím).

set -g prefix C-j
unbind C-b
bind C-j send-prefix

Bước 2. 'S' (để vào chế độ sao chép) là: 1) đóng (cùng lý do như trên), 2) liên quan đến mặt khác (so sánh: 1-2 trong quyền anh hoặc lslệnh để xem tệp trong thư mục ) và 3) có thể được coi là ghi nhớ cho "cuộn" (mặc dù chế độ sao chép không chỉ là về cuộn).

bind s copy-mode

Bước 3. Phần cuối cùng, cuộn thực tế. 'P' và 'N' quen thuộc cho mục đích này đối với người dùng Emacs. Chúng gần gũi, trực quan ('P' ở trên 'N' trên bàn phím) và ghi nhớ ("trước" và "tiếp theo"). Nếu bạn vừa thực hiện một số thao tác cuộn trong Emacs, sau đó truy cập vào tmux, sẽ có ý nghĩa khi có các phím tắt đó.

Tuy nhiên, tôi thấy rằng 'Tôi' và 'K' thậm chí còn tốt hơn - chúng thậm chí còn gần hơn 'P' và 'N' và trực quan (vì cùng lý do); đối với việc ghi nhớ - vì di chuyển là một việc rất phổ biến, việc ghi nhớ sẽ không thực sự quan trọng vì các phím tắt sẽ sớm vượt qua bộ não của bạn và đi vào bộ nhớ cơ.

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down

7

Tôi đã tìm kiếm rất nhiều về điều này và giải pháp tốt nhất cho tôi hoạt động như được đề cập trong hướng dẫn chi tiết này: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Thêm các liên kết này trong ~ / .tmux.conf:

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

Với cách tiếp cận trên được triển khai, bạn cũng có thể sao chép từ các ô trong một cửa sổ bằng cách phóng to vào từng ô trước bằng cách sử dụng Tiền tố + .

Một chi tiết quan trọng bị thiếu với chế độ chuột là nhấn Shift trước khi chọn một khu vực để sao chép. Điều này sẽ sao chép nó vào bộ đệm đầu cuối truyền thống thay vì bộ đệm sao chép tmux. ( https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )


7

Tôi khuyên bạn nên dùng thử plugin chế độ tmux-better-mouse để giải quyết hầu hết các vấn đề liên quan đến chuột tmux của bạn.

Nó tương thích với Tmux 2.1+ và set-option -g mouse oncách tiếp cận mới .


1
Cảm ơn, đây là giải pháp tốt nhất cho tôi. Nó bao gồm tất cả các ràng buộc bánh xe chuột của tôi mà tôi đã thêm bằng tay (vì vậy tôi không cần chúng nữa) và có hai tính năng sát thủ mà tôi rất muốn: scroll-without-changing-panekết hợp với scroll-without-changing-paneemulate-scroll-for-no-mouse-alternate-buffer. Bây giờ kinh nghiệm sử dụng tmux của tôi là cách, cách tốt hơn.
selurvedu

6

Điều duy nhất phù hợp với tôi là đưa những thứ sau vào ~/.tmux.conf

# 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"

(bạn có thể cần phải khởi động lại để điều này có hiệu lực)

Cập nhật:

Tôi thấy rằng nếu bạn thay đổi cài đặt trong Putty Connection> Dữ liệu> Kiểu đầu cuối thành "putty" (được sử dụng để khắc phục một số vấn đề định dạng) từ "xterm" thì giải pháp này sẽ ngừng hoạt động.

Cập nhật 2:

Sử dụng cái này nếu bạn muốn "putty" làm loại thiết bị đầu cuối của bạn: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
Điều này thực sự cũng giải quyết vấn đề cuộn của tôi trong ứng dụng iPhone.
NathaneilCapital

Lần gần đây nhất tôi đã thử điều này không còn hiệu quả nữa, nhưng điều này đã làm việc. Lạ thật. set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
phocks

4

Điều này làm việc cho tôi:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf

2
Kể từ phiên bản 2.1 (ngày 18 tháng 10 năm 2015), tùy chọn sẽ làset -g mouse on
naoko

+1 để thực sự cung cấp đường dẫn đầy đủ cho tệp cấu hình. Câu trả lời của @ chaiyachaiya sẽ hoàn hảo nếu không.
John McFarlane

1

FWIW, trên macbook / OSX Mojave, sau khi ctrl+[làm:

  • up arrow xếp hàng
  • down arrow cho dòng xuống
  • fn + up arrow cho trang lên
  • fn + down arrow cho trang xuống
  • q để thoát khỏi chế độ xem

0

Điều duy nhất phù hợp với tôi là vim ~ / .tmux.conf set -g mode-mouse trên ### Chèn cài đặt này với vim, sau đó nguồn tệp. tập tin nguồn tmux ~ / .tmux.conf


Bạn có thể sử dụng một số định dạng để làm cho điều này rõ ràng hơn? Sử dụng nút EDIT và sau đó xem các tùy chọn có sẵn trong trình chỉnh sửa để thêm các định dạng hữu ích.
nhạc2myear

-2
  • Ctrl+ A- để bắt đầu cuộn
  • Ctrl+ C- để dừng cuộn

3
Bài đăng này quá ngắn để có thể trả lời hữu ích câu hỏi. Nó thêm rất ít thông tin mới vào câu trả lời đã được đăng; nó không nói gì về cách cuộn (chỉ có cách thay đổi trong và ngoài chế độ sao chép). Ngoài ra, tổ hợp phím tiền tố lệnh mặc định là Ctrl-B( Ctrl-Alà mặc định cho màn hình GNU).
Anthony Geoghegan

1
Không chắc chắn nếu tác giả của câu trả lời này thậm chí hiểu câu hỏi. Thật vô ích và chỉ sai.
Vik

2
Tôi đã tìm cách dừng cuộn quá lâu, cảm ơn vì đã chỉ ra!
PERR0_HUNTER
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.