題 如何在tmux中滾動?


我剛開始使用tmux,我真的很喜歡它,但我需要能夠在我打開的緩衝區/窗格/窗口內滾動。我不在乎它是否適用於鼠標。當我搜索tmux手冊頁時,我發現只有“滾動”這個詞的兩個實例甚至出現,而且兩者都與復制模式有關。有沒有辦法滾動沒有進入複製模式的所有開銷?


1099
2017-11-10 18:40


起源


你擔心什麼開銷? copy-mode 是查看歷史記錄的方式(並可選擇複製其中的內容)。 - Chris Johnsen
對我來說,你可以按f7滾動模式,然後按q退出 - JohnMerlino
set -g mode-mouse on per @ chaiyachaiya的回答是我的贏家 - Peter Berg


答案:


按Ctrl - b 然後 [ 然後你可以使用普通的導航鍵滾動(例如。 向上箭頭 要么 PgDn鍵)。按 q 退出滾動模式。

或者你可以按 按Ctrl - b  PgUp鍵 直接進入複印模式並向上滾動一頁(這聽起來像你大部分時間都會想要的)

vi 模式(見下文),您也可以使用逐行向上/向下滾動頁面 轉移 - ķ 和 轉移 - Ĵ (如果你已經處於滾動模式)。未移位,光標移動而不是頁面。

節選自 手冊頁

tmux可以通過使用前綴鍵的鍵組合來控制來自附加的客戶端,默認情況下為“C-b”(Ctrl-b),然後是命令鍵。

 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-b 如果你用它來翻頁,那麼兩次 C-b 綁定為命令鍵。有關使用重複計數添加複制模式命令的信息,請參見手冊頁。

您可以使用設置密鑰綁定模式 按Ctrl - b, 然後

:set-window-option mode-keys emacs

要么 vi


1337
2017-11-11 03:02



我認為 C-b = 是 choose-buffer 默認情況下。你的意思是 C-b [ (是的 copy-mode 默認情況下)?你也可以使用 C-b PageUp 直接在上一頁上啟動複製模式(當您知道要查看/複製的內容已經滾動到當前頁面時非常方便)。 - Chris Johnsen
正確,我的tmux沒有滾動模式。你需要 C-b [ 進入複製模式,然後使用emacs或vi鍵綁定滾動。這似乎只是滾動的許多步驟,但tmux的好處仍然超過這些煩惱。我在macbook上沒有PageUp鍵: - \。 (另外,我如何像你一樣用降價製作鑰匙,丹尼斯?) - chadoh
@chadoh:在你的Macbook上試試這些:主頁:fn-LeftArrow;結束:fn-RightArrow; Page Up:fn-UpArrow; Page Down:fn-DownArrow。製作鍵帽: <kbd>Ctrl</kbd> - Dennis Williamson
在macbook上,fn + up直接進入終端app並且永遠不會達到tmux - Tyler
在MacBook上,如果您處於滾動模式,則可以使用fn + Shift + LeftArrow向上滾動頁面。 - Nick Hammond


那麼,您應該考慮設置滾動的正確方法: 加入你的 tmux.conf

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

要么

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

它在窗戶和窗格中對我有用。現在tmux非常完美。

實用的tmux 有關於tmux.conf文件的更多信息。


248
2017-11-25 13:05



當我這樣做時,鼠標點擊和滾動會導致亂碼字符被打印到我正在使用tmux的終端的提示區域。有任何想法嗎? - ely
未來的tmux鼠標用戶:為了節省您在鍵入之前必須再次滾動到底部,您可以點擊 q 退出滾動模式。 - Jezen Thomas
鼠標滾動與此工作正常,但不幸的是我不能再用鼠標來選擇文本了。使用Tilda和tmux。 - friederbluemle
請注意,在tmux 2.1及更高版本中,將替換為 set -g mouse on,滾動不會像以前那樣自動進入複製模式。 - thrnio
重要說明:此設置會突破顯示和復製文本。使用shift +單擊可以保持此功能。 - Shadoninja


從我的.tmux.conf:

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

這使得本機xterm滾動。


128
2017-08-22 20:49



你能解釋一下這究竟是什麼嗎? - Ivo
我不知道它做了什麼,但它是純粹的天才。最後,tmux滾動工作,耶! - oneself
這在OS X上對我不起作用...... - Nick
解: gist.github.com/1297707 - Nick
如果你對togdon的答案感到困惑,請查看這個: superuser.com/questions/310251/...   IMO,如果您只有一個窗格,此解決方案比接受的答案效果更好。 - thameera


對於最新的tmux 2.1,要用你的鼠標滾動,這是正確的答案:

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

僅重新加載.tmux.conf是不夠的,您需要重新啟動tmux,例如 tmux kill-server && tmux

取自 https://github.com/tmux/tmux/issues/145


42
2017-12-01 16:09



這怎麼不是公認的答案? - Marcel
這個答案中的註釋“不足以簡單地重新加載.tmux.conf幫助”並退出所有tmux會話(也許kill-server會起作用)幫助! - Colin D
你能詳細說明這是如何運作的嗎? - oligofren
當點擊/滾動鼠標等時,它似乎轉發鼠標事件。如果窗格處於任何間接/緩衝狀態(只是複制模式?),並且鼠標按下按鈕,滾動等。最後一部分通過首先切換到間接模式來覆蓋直接模式下的滾動。如果不是那些控件,終端可能會將事件解釋為歷史滾動(如果有的話)。話雖如此,我不知道我是否能夠讓我的尋呼機和Vim同時正確滾動,我已經嘗試了一堆片段。 - John P


在我的情況下,只是 選擇 + 向上箭頭 和 選擇 + DownArrow中文 在OSX上。


12
2018-04-17 03:43



@ fixer1234問題根本沒有提到Linux。 tmux 也可以在OS X上使用。 - slhck
@slhck:謝謝。太傻眼了;散光開始了。我誤讀了tmux標籤作為linux標籤。 - fixer1234


這是我使它工作的方式,以及我認為它比默認方式更好的原因。

要試用它,請將所有代碼部分放入 ~/.tmux.conf

步驟1.更改前綴鍵,這樣您就不必達到一位。 'B'似乎是一個緊密的關鍵,但它位於兩個食指的中間(分別在'F'和'J')。因為這個快捷方式在tmux中是必不可少的,所以C-j更好,因為它涉及零手移動(除了按鍵)。

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

步驟2.'S'(進入複製模式)是:1)關閉(與上述相同的原因),2)涉及另一隻手(比較:拳擊中的1-2,或者 ls 命令查看目錄中的文件),3)可以被認為是“滾動”的助記符(雖然複製模式不只是滾動)。

bind s copy-mode

第3步。最後一部分,實際滾動。 'P'和'N'對於Emacs用戶來說是熟悉的。它們非常接近,直觀('P'在鍵盤上方'N'上方)和助記符(“上一個”和“下一個”)。如果您只是在Emacs中進行了一些滾動,然後轉到tmux,那麼擁有這些快捷方式是有意義的。

然而,我發現'我'和'K'甚至更好 - 它們甚至比'P'和'N'更接近,而且直觀(出於同樣的原因);至於助記符 - 由於滾動是如此常見的事情,助記符並不重要,因為快捷鍵很快就會繞過你的大腦並進入肌肉記憶。

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

10
2018-06-21 15:33





我搜索了很多這個,對我來說最好的解決方案就像這個詳細指南中提到的那樣: http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

在〜/ .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

通過實現上述方法,您可以在窗口中復制窗格 縮放 首先使用到每個窗格 字首  +

鼠標模式缺少的一個重要細節是按 轉移 在選擇要復制的區域之前。這會將其複製到傳統的終端緩衝區而不是tmux複製緩衝區。 (https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues


6
2018-03-31 00:42



感謝你的回答。但很多時候,推薦的鏈接可能會破裂。在這裡添加答案的核心部分並提供僅供參考的鏈接總是有益的。 - Prasanna


我建議嘗試一下 TMUX,更好,鼠標模式 插件可以解決大多數與tmux鼠標相關的問題。

它與Tmux 2.1+和新版本兼容 set-option -g mouse on 做法。


5
2017-12-07 16:34



謝謝,這對我來說是最好的解決方案。它涵蓋了我手動添加的所有鼠標滾輪綁定(因此我不再需要它們),並且有兩個我非常想要的殺手功能: scroll-without-changing-pane 與...結合 scroll-without-changing-pane 和 emulate-scroll-for-no-mouse-alternate-buffer。現在我的tmux使用體驗方式更好。 - selurvedu


唯一對我有用的是將以下內容放入其中 ~/.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"

(您可能需要重新啟動才能生效)

更新:

我發現,如果您將“Putty Connection> Data> Terminal-type中的設置更改為”putty“(用於修復某些格式問題),那麼此解決方案將停止工作。

更新2:

如果您想要“putty”作為終端類型,請使用此選項: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


4
2017-10-28 10:59



這個實際上解決了我在iPhone應用程序中的滾動問題。 - NathaneilCapital
我試過的最新版本不再適用了,但這很有效。奇怪。 set -ga terminal-overrides ',xterm*:smcup@:rmcup@' - phocks


這對我有用:

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

1
2018-01-04 20:22





  • 按Ctrl + 一個  - 開始滾動
  • 按Ctrl + C  - 停止滾動

-3
2017-10-26 07:55



這篇文章太短,無法有效地回答這個問題。它為已經發布的答案添加了很少的新信息;它沒有說什麼 怎麼樣 滾動(僅限如何更改進出複制模式)。此外,默認命令前綴鍵組合是 Ctrl-B (Ctrl-A是GNU屏幕的默認值)。 - Anthony Geoghegan
不確定這個答案的作者是否理解了這個問題。這是無益的,也是錯的。 - Vik
我一直在尋找如何停止滾動這麼久,感謝指出它! - PERR0_HUNTER