我刚开始使用tmux,我真的很喜欢它,但是我需要能够在打开的缓冲区/窗格/窗口中滚动。我不在乎它是否适用于鼠标。当我搜索tmux手册页时,我什至只显示了两个单词“ scroll”,甚至都出现了,并且都与复制模式有关。有没有滚动方式,而无需进入复制模式的所有开销?
set -g mode-mouse on
每个@chaiyachaiya的回答对我来说都是赢家
我刚开始使用tmux,我真的很喜欢它,但是我需要能够在打开的缓冲区/窗格/窗口中滚动。我不在乎它是否适用于鼠标。当我搜索tmux手册页时,我什至只显示了两个单词“ scroll”,甚至都出现了,并且都与复制模式有关。有没有滚动方式,而无需进入复制模式的所有开销?
set -g mode-mouse on
每个@chaiyachaiya的回答对我来说都是赢家
Answers:
Ctrl- b然后,[您可以使用普通的导航键滚动(例如Up Arrow或PgDn)。按q退出滚动模式。
或者,您可以按Ctrl- b PgUp直接进入复印模式并向上滚动一页(这听起来似乎是您大多数时候都想要的)
在vi
模式下(请参阅下文),您还可以使用Shift- k和Shift- j(如果您已经处于滚动模式)逐行向上/向下滚动页面。光标不移动,而不移动页面。
手册页摘录:
通过使用前缀键(默认情况下为'C-b'(Ctrl-b))和命令键的组合键,可以从附加的客户端控制tmux。
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
。
C-b =
是choose-buffer
默认。您是说C-b [
(copy-mode
默认情况下)吗?您也可以C-b PageUp
直接在上一页上启动复制模式(当您知道要查看/复制的内容已经从当前页面滚动下来时非常方便)。
C-b [
进入复制模式,然后使用emacs或vi键绑定进行滚动。这似乎只是滚动的许多步骤,但是tmux的好处仍然胜过这些烦恼。我在Macbook上,没有PageUp键:-\。(此外,丹尼斯,我该如何像
<kbd>Ctrl</kbd>
好吧,您应该考虑设置滚动的正确方法:在 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文件的更多信息。
q
以退出滚动模式。
set -g mouse on
,并且滚动不会像以前那样自动进入复制模式。
对于最新的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
Shift+click
在打开鼠标模式时进行此操作。
这是我使其工作的方式,也是我认为它比默认方式更好的原因。
要进行尝试,请将所有代码部分放在中~/.tmux.conf
。
第1步。更改前缀密钥,这样您就不必达到一位。“ B”似乎是一个闭合键,但它位于两个食指的中间(分别位于“ F”和“ J”处)。因为该快捷方式对于tmux是必不可少的,所以Cj更好,因为它涉及零手部运动(除了敲键)。
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.最后一部分,实际滚动。为此,Emacs用户熟悉“ P”和“ N”。它们接近,直观(键盘上的“ P”在“ N”上方)和助记符(“上一个”和“下一个”)。如果您只是在Emacs中进行了一些滚动,然后转到tmux,则拥有这些快捷方式是有意义的。
但是,我发现'I'和'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
我为此进行了很多搜索,并且如本详细指南中所述,对我来说,最好的解决方案是可行的: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 + 放大每个窗格来从窗口的窗格中进行复制。
鼠标模式缺少的一个重要细节是在选择要复制的区域之前按Shift。这会将其复制到传统的终端缓冲区,而不是tmux复制缓冲区。(https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues)
我建议尝试使用tmux-better-mouse-mode插件来解决大多数与tmux鼠标有关的问题。
它与Tmux 2.1+和新set-option -g mouse on
方法兼容。
scroll-without-changing-pane
与scroll-without-changing-pane
和结合使用emulate-scroll-for-no-mouse-alternate-buffer
。现在,我的tmux使用经验非常好。
唯一对我有用的是将以下内容放入 ~/.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"
(您可能需要重新启动才能生效)
更新:
我发现,如果将“腻子连接”>“数据”>“终端类型”中的设置从“ xterm”更改为“ putty”(用于解决某些格式问题),则此解决方案将停止工作。
更新2:
如果要将“ putty”作为终端类型,请使用此选项: set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"
set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
对我唯一有用的是在###上使用vim〜/ .tmux.conf set -g mode-mouse在Vim中插入此设置,然后获取文件。tmux源文件〜/ .tmux.conf
Ctrl-B
(Ctrl-A
GNU屏幕的默认键组合)。
copy-mode
是查看历史记录的方式(也可以选择复制其中的内容)。