tmux 逃离我推掉我的手 2022-06-10 05:55 151阅读 0赞 # 什么是Tmux # 当你在公司使用SSH连接到公司的机器上,使用Iterm2打开很多窗体。当你回家后,准备工作时,还需要再那打那么多窗体。如果你感觉到烦的话,请使用它。 # 如何学习文章 # [Tmux 简介与使用][Tmux]:总结的很好 [如何使用Tmux提高终端环境下的效率][Tmux 1]:特别基础,内容不多,多图。 [tmux使用及个性化配置][tmux] [Tmux 速成教程:技巧和调整][Tmux 2]:非常实用的文章 [优雅地使用命令行:Tmux 终端复用][Tmux 3] [如何使用一条命令连接到服务器,并打开tmux][tmux 1] [程序员高效技巧系列 – 完全脱离鼠标的终端][Link 1]:一些进阶的技巧,这个文章下面的参考文章也是一些进阶的文章 # 遇到的问题 # 本人使用的是`2.5`版本。因为有一些文章都是基于老版本的配置,在实践时遇到的一些问题,记录下要来: 1,一开始我看到tmux,看有的文章介绍,以为它可以防止ssh连接断开。但我误解了,它不能防止ssh连接断开,它可以保留ssh断开前,打开的window或pane。 tmux是保持“实际被操作的机器的window和pane”,不是你正使用的机器。比如: > 你正使用你的Mac,SSH连接到公司的机器上工作。如果你要保持你打开的window和Pane,就要在公司的机器上安装tmux,而不是你的Mac上。 2,很多文章说编辑`~`目录下的`.tmux.conf`,但这个文件是没有的,是需要自己手动创建的。你可以从`tmux`目录的`share/tmux`目录下,复制`example_tmux.conf`文件出来,改名为`.tmux.conf`。(注意,不要忘了文件前面那个点) 3,在修改完配置文件后,可以要session中,使用下面的方法来刷新session配置: * 按prefix键(默认为:ctrl + b ) * 按“:”键 * 输入”source-file ~/.tmux.conf” 但注意一点,在输入完这个命令后在下面的状态栏可以看到:多了4个window。不知道怎么回事,没时间去细看了,大家注意一下。 > 多出4个原因找到了,是因为把tmux自带的tmux.conf拿出来用时,它自带了下面的设置: 4,VIM颜色显示不对问题 * 1,在Shell里设置以下变量(我是放到了`.bashrc`文件里了): export TERM=xterm-256color * 2,在`.vimrc`文件里添加下面的脚本: if exists('$TMUX') set term=screen-256color endif 5,很多例子中说,你还可以设置 Tmux 使用 v 键选择文本,用 y 键复制文本。为此只需要将下面的配置项加入到配置文件 ~/.tmux.conf 中。 # start selecting text typing 'v' key (once you are in copy mode) bind-key -t vi-copy v begin-selection # copy selected text to the system's clipboard bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy 但上面是之前版本的写法,2.5版本的话使用下面的方法: # Bind `v` to trigger selection bind-key -T copy-mode-vi v send-keys -X begin-selection # Bind `y` to yank current selection bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel 6,在Tmux中,想复制屏幕上的内容的话,需要按下面的步骤去做: * 按prefix键(默认是 ctrl + b ) * 按“\[”键,然后用光标键移动到要复制的位置 * 按空格键进行选择要复制的范围,再按回车键进行复制 * 按prefix键(默认是 ctrl + b )后,再按“\]”键进行粘贴 有的人喜欢使用VIM的模式,就是用“ESC”键代替“\[”键,用“p”键代替“\]”键,想这么做的话,可以使用下面的方法: bind Escape copy-mode unbind p bind p pasteb 有的可能用上面的脚本中的`bind Escape copy-mode`不好用,看有的文章上说需要先`unbind [`,所以如果上面脚本不好用的话,可以试试下面的脚本: unbind [ bind Escape copy-mode unbind p bind p pasteb 如果想看每个键和哪个事件绑定的话,可以使用下面的命令: tmux list-keys 8,想启动Tmux就打开并列窗口的话,请参考下面的文章: [Linux下终端利器tmux][Linux_tmux] 9,设置通过鼠标能上下滚动,调整容器大小的设置也变了。参考文章:[tmux set -g mouse-mode on doesn’t work][tmux set -g mouse-mode on doesn_t work] 旧设置: setw -g mouse-resize-pane on # 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线) setw -g mouse-select-pane on # 开启用鼠标点击pane来激活该pane setw -g mouse-select-window on # 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称) setw -g mode-mouse on # 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本) 新设置 set -g mouse on > 奇怪,Mac 10.11 好像也是 tmux2.5,旧设置也好用 10,如何用鼠标进行复制 在设置完`set -g mouse on`后,,使用`option + 鼠标左键`就可以进行复制了。(个人使用的是Iterm2) # 插件 # Tmuxinator (为项目自动创建会话) > 假设你正在开发应用程序 A。在开发过程中,经常要创建 Tmux 会话,会话中包含“server”、“editor”(用于编写代码)和“shell”(用于运行系统命令)这 3 个窗口。不仅如此,在一天之中的某个特定的时间你还需要临时进入到应用程序 B 的开发工作中。于是你又不得不创建另一个会话,虽然有略微的不同(比如目录和某些命令),但是会话中还是要包含应用程序 A 中的那 3 个窗口。但是有了 Tmuxinator,你就可以为每个Tmux 会话声明一个配置,然后用 1 条命令就能创建出这个会话了。这功能太棒了,不是吗。 Tmux Resurrect: > Tmux Resurrect 能够备份Tmux会话的各种细节,包括所有会话、窗口、窗格以及它们的顺序,每个窗格的当前工作目录,精确的窗格布局,活动及替代的会话和窗口,窗口聚焦,活动窗格,窗格中运行的程序等等,非常贴心。 Tmux Continuum(推荐) > Tmux Resurrect 工作很好,只是备份和还原都是手动完成。而 Tmux Continuum 更进一步,它将 Tmux 会话的保存及还原自动化,定时备份,然后在 Tmux 启动时还原。 # 同类软件 # GNU Screen、dvtm、splitvt、byobu # 自己的脚本 # # Example .tmux.conf # # By Nicholas Marriott. Public domain. # # Some tweaks to the status line set -g status-right "%H:%M" set -g window-status-current-attr "underscore" # If running inside tmux ($TMUX is set), then change the status line to red %if #{TMUX} set -g status-bg red %endif # Enable RGB colour if running in xterm(1) #set-option -sa terminal-overrides ",xterm*:Tc" # Change the default $TERM to tmux-256color set -g default-terminal "tmux-256color" # No bells at all set -g bell-action none # Keep windows around after they exit set -g remain-on-exit on # Change the prefix key to C-a set -g prefix C-a unbind C-b bind C-a send-prefix # Turn the mouse on, but without copy mode dragging #set -g mouse on #unbind -n MouseDrag1Pane #unbind -Tcopy-mode MouseDrag1Pane # Some extra key bindings to select higher numbered windows bind F1 selectw -t:10 bind F2 selectw -t:11 bind F3 selectw -t:12 bind F4 selectw -t:13 bind F5 selectw -t:14 bind F6 selectw -t:15 bind F7 selectw -t:16 bind F8 selectw -t:17 bind F9 selectw -t:18 bind F10 selectw -t:19 bind F11 selectw -t:20 bind F12 selectw -t:21 # Keys to toggle monitoring activity in a window, and synchronize-panes bind m set monitor-activity bind y set synchronize-panes\; display 'synchronize-panes #{?synchronize-panes,on,off}' # Create a single default session, because a session is created here, tmux # should be started with "tmux attach" rather than "tmux new" #new -d -s0 -nirssi 'exec irssi' #set -t0:0 monitor-activity on #set -t0:0 aggressive-resize on #neww -d -ntodo 'exec emacs ~/TODO' #setw -t0:1 aggressive-resize on #neww -d -nmutt 'exec mutt' #setw -t0:2 aggressive-resize on #neww -d #neww -d #neww -d # customize ------------------------- # 在按下prefix后,进入VI模式,可以使用hjkl进行移动,然后选择复制等 # Use vim keybindings in copy mode setw -g mode-keys vi unbind [ # 设置 Tmux 使用 v 键选择文本,用 y 键复制文本 bind Escape copy-mode # start selecting text typing 'v' key (once you are in copy mode) bind-key -T copy-mode-vi v send-keys -X begin-selection # copy selected text to the system's clipboard bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel unbind p bind p pasteb # 将复制下来的文本发送到系统的剪贴板中 # invoke reattach-to-user-namespace every time a new window/pane opens set-option -g default-command "reattach-to-user-namespace -l bash" # 用鼠标切换窗口/调节分屏大小 setw -g mouse-resize-pane on # 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线) setw -g mouse-select-pane on # 开启用鼠标点击pane来激活该pane setw -g mouse-select-window on # 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称) setw -g mode-mouse on # 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本) #消息栏字体使用UTF-8编码 set -g status-utf8 on # 将Ctrl + r 设置为加载配置文件,并显示”Refleshed configure!”信息 bind C-r source-file ~/.tmux.conf \; display "Refleshed Configure!" [Tmux]: http://kuanghy.github.io/2016/09/29/tmux [Tmux 1]: https://linux.cn/article-3952-1.html [tmux]: http://blog.csdn.net/ZCF1002797280/article/details/51859524 [Tmux 2]: http://blog.jobbole.com/87584/ [Tmux 3]: http://harttle.com/2015/11/06/tmux-startup.html [tmux 1]: https://superuser.com/questions/490652/tmux-how-to-prevent-broken-pipe [Link 1]: http://cenalulu.github.io/linux/professional-tmux-skills/ [Linux_tmux]: http://kumu-linux.github.io/blog/2013/08/06/tmux/ [tmux set -g mouse-mode on doesn_t work]: https://stackoverflow.com/questions/11832199/tmux-set-g-mouse-mode-on-doesnt-work
还没有评论,来说两句吧...