如何在tmux中实现类似Vim scrollbind的双窗格同步滚动?
在tmux中实现类似Vim scrollbind的双窗格同步滚动
刚好我之前也折腾过这个需求,tmux本身就提供了对应的功能,不过和Vim的scrollbind有一点区别,下面分两种场景给你讲具体实现方式:
一、tmux原生全操作同步
这种方式会让tmux的多个窗格同步所有键盘操作——包括滚动、输入命令等,步骤非常简单:
- 创建分窗:先打开tmux会话,用
Ctrl+b %创建垂直分窗(或者Ctrl+b "创建水平分窗),然后在两个窗格中打开你需要同步的文件(比如都打开LICENSE)。 - 启用同步滚动:
- 按下
Ctrl+b :唤起tmux的命令输入框 - 输入命令
setw synchronize-panes on并回车,此时两个窗格就会同步所有操作了——你在一个窗格按上下键滚动,另一个会跟着同步滚动;甚至输入命令也会同步到另一个窗格。
- 按下
- 关闭同步:同样按下
Ctrl+b :,输入setw synchronize-panes off即可取消同步。
优化:绑定快捷键一键切换
每次输命令太麻烦,你可以给这个功能绑定一个快捷键,比如把Ctrl+b s设为同步开关:
- 编辑你的tmux配置文件
~/.tmux.conf,添加一行:bind-key s setw synchronize-panes toggle - 保存后,执行
tmux source ~/.tmux.conf重新加载配置,之后按Ctrl+b s就能一键切换同步状态,非常方便。
二、仅同步滚动(结合Vim scrollbind)
如果你只想同步滚动,不想同步其他输入操作(比如在一个窗格里编辑内容,另一个不跟着变),可以结合Vim的scrollbind在tmux的每个窗格中设置:
- 在tmux的两个窗格中分别打开Vim和目标文件
- 在每个Vim实例中执行
:set scrollbind,之后就能像纯Vim环境里那样只同步滚动,互不干扰编辑操作。
这种方式更贴近你熟悉的Vimscrollbind体验,适合需要独立编辑但同步查看的场景。
内容的提问来源于stack exchange,提问作者LF-DevJourney
相关产品推荐
相关产品推荐

