如何在tmux中滚动?
我刚刚开始使用tmux,我很喜欢它,但我需要能够在我打开的缓冲区/面板/窗口中滚动。我不关心它是否能用鼠标操作。当我搜索tmux的man页时,我发现只有两个例子显示 “滚动 "一词,而且都与复制模式有关。有没有一种方法可以在没有进入复制模式的情况下滚动?
我刚刚开始使用tmux,我很喜欢它,但我需要能够在我打开的缓冲区/面板/窗口中滚动。我不关心它是否能用鼠标操作。当我搜索tmux的man页时,我发现只有两个例子显示 “滚动 "一词,而且都与复制模式有关。有没有一种方法可以在没有进入复制模式的情况下滚动?
按Ctrl-b,然后按[然后你可以使用正常的导航键来滚动(例如:向上箭头或PgDn)。按q键退出滚动模式。
另外,你也可以按Ctrl-b PgUp键直接进入复制模式,向上滚动一页(听起来你大部分时间都是这么想的)
在vi
模式下(见下图),你也可以用Shift-k和Shift-j逐行滚动页面(如果你已经在滚动模式下)。
摘自man page:
tmux可以通过使用前缀键组合键,默认是C-b(Ctrl-b),后面是命令键,可以从附加的客户端控制。注意,如果你用它来翻页,你必须按两次
C-b
,因为C-b
被绑定为命令键。请参阅MAN页面,在复制模式命令前加上重复数。
你可以用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
或vi
。
好吧,你应该考虑一下设置滚动的正确方法:在你的tmux.conf
set -g mouse on #For tmux version 2.1 and up
set -g mode-mouse on #For tmux versions < 2.1
或
&001
在windows和panes中,对我来说是有效的。 实用的tmux有更多关于tmux.conf文件的信息。
对于最新的 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
这是我做出来的方法,以及我认为比默认的方法好的原因。
要试一试,把所有的代码部分都放到~/.tmux.conf
里。
第一步,把所有的代码部分都放到ls
里。改一下前缀键,这样你就不用达到一个位了。'B'看似是个近似键,但它在两个食指中间(分别在'F'和'J'处)。因为这个快捷键在tmux中是必不可少的,所以C-j要好得多,因为它涉及到的手部动作为零(除了击键外)。
set -g prefix C-j
unbind C-b
bind C-j send-prefix
第二步。’S'(进入复制模式)是:1)关闭(同上的原因相同),2)涉及到另一只手(比较:拳击中的1-2,或者是查看目录中的文件的&007命令),3)可以看作是 “滚动 "的口诀(虽然复制模式不只是滚动)。最后一部分,实际的滚动。对于Emacs用户来说,'P'和'N'对于这个目的来说是很熟悉的。它们很接近,很直观('P'在键盘上的'N'上面),而且是记忆性的("上一个 "和 "下一个")。如果你只是在Emacs中做了一些滚动,然后转到tmux,有这些快捷键是有意义的。
不过,我发现'I'和'K'更好–它们比'P'和'N'更接近,也更直观(原因相同);至于记忆符–由于滚动是如此常见的事情,记忆符其实并不重要,因为这些快捷键很快就会绕过你的大脑,进入肌肉记忆。
它兼容Tmux 2.1+和新的set-option -g mouse on
方法。
我找了很多关于这个问题的资料,对我来说,最好的解决方法是在这个详细的指南中提到的 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
实现了上述方法后,你也可以通过使用Prefix** +*来从窗口中的每个窗格中复制。这将复制到传统的终端缓冲区,而不是tmux复制缓冲区。 https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues )
唯一对我有效的是在~/.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"
中加入以下内容(你可能需要重新启动才能生效)。
更新2:*
如果你想把 “putty "作为你的终端类型,请使用这个设置: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"
ctrl+[
后做:up arrow
为上行down arrow
为下行fn + up arrow
为上行fn + down arrow
为下行